ウェブエンジニア問題集
第16章

付録C: 次のステップ — 緑から水色へ、そして面接本番へ

5
この章の目次開く

本書で身につけた道具は、paiza B〜S・AtCoder灰〜緑・面接の標準問題をカバーしています。この付録では、その先の道を3方向に分けて案内します。

方向1: AtCoder緑 → 水色

水色(上位約4%)に上がるには、本書の道具に加えて次のアルゴリズム群が必要になります。

分野内容本書からの接続
DPの発展桁DP・区間DP・bitDP第10章の「定義→遷移→初期値」がそのまま通用
セグメント木区間の最大/合計を更新つきでO(log N)累積和(第3章)の上位互換
数論素数篩・繰り返し二乗法・逆元剰余計算(付録A)の延長
LISのO(N log N)化lowerBoundとDPの合わせ技第8章+第10章の融合問題
ワーシャルフロイド全点対最短路O(N³)ダイクストラ(第11章)の兄弟

学習の主軸は「新しい知識」よりも過去問の量に移ります。目安として、ABCのC〜D問題を100問解くころには緑後半〜水色が見えてきます。

学習者学習者

100問かぁ。急がず、毎週のABCに出ながらコツコツやる感じかな。

それが一番の王道です。コンテスト中に解けなかった問題を**その週のうちに復習する(upsolve)**サイクルが、最も効率の良い成長パターンだと多くの上位勢が口を揃えます。

方向2: paiza Sランクの安定化

paizaのA〜Sランク問題は、アルゴリズムの難度そのものより実装の重さが壁になります。

  • 入力の仕様が複雑(複数種類のクエリ、条件分岐の多いシミュレーション)
  • 「1マスずつ処理する」「状態を正確に更新する」丁寧な実装力が問われる

対策は本書の道具+2つの習慣です。

  1. 仕様を紙に書き出してから実装する — 問題文の条件を箇条書きに変換し、実装後にチェックリストとして使う
  2. 関数に分割するparseInput() / simulate() / output() と分けるだけで、バグの居場所が特定しやすくなる

Sランクは転職市場で強いシグナルになります。取得したらプロフィールに堂々と書きましょう。

方向3: コーディング面接の本番対策

面接は「解く」に加えて「伝える」試験です。本書の内容を面接用に運用する方法をまとめます。

面接の標準的な流れ(45〜60分)

1. 問題提示 → まず質問する(入力の範囲は?重複は?空のケースは?)
2. 方針を口頭で説明 → 面接官の合意を得てから書き始める
3. 実装 → 書きながら考えを実況する
4. テスト → 自分から端のケースを挙げて検証する
5. 改善 → 「計算量をさらに落とせるか」の議論

評価されるポイント

評価軸本書の対応
問題の理解と質問力第12章の5ステップ(制約→要約)
計算量の意識第2章の見積もり術をそのまま口に出す
解法の説明力「全探索→改善」の語り(第7章)
コードの正確さスニペットの手癖化(付録B)
テストの姿勢「空・1個・重複・最大」の4点セットを自分から挙げる
次の段階へ進む人

模擬面接の練習相手がいない場合は、声に出しながら1人で解くだけでも効果があります。録音して聞き返すと、説明の詰まりどころが客観視できます。

継続学習のリソース

  • AtCoder Problems(非公式過去問サイト) — 難易度別に過去問を消化するならここ。解いた問題の記録も付く
  • AtCoder公式の精選過去問集 — 「ABS(AtCoder Beginners Selection)」は最初の10問として最適
  • paizaのスキルチェック — 週1問のペースメーカーとして。ランクは何度でも挑戦可能
  • 本書の模擬テスト(第13章 — 3か月後に解き直すと成長が数値で見える

理論の背景を深めたくなったら『コンピュータサイエンスの基礎』へ、TypeScriptの言語仕様を固めたくなったら『TypeScript入門』へ——サイト内の他の書籍も併走できます。

最後に

メンターメンター

コーディングテストの力は、裏切らない資産です。転職の選択肢が広がるだけでなく、日々の実装で「この処理、O(N²)になってないか?」と気づける目は、現場でそのまま品質になります。ここまで完走したあなたなら、あとは続けるだけ。健闘を祈ります!

  • 緑→水色は「新知識2割、過去問8割」。週次ABC参加とupsolveの習慣が王道
  • paiza Sは実装力の勝負。仕様の箇条書き化と関数分割で事故を減らす
  • 面接は「伝える」試験。5ステップの実況と、自分から挙げるテストケースが評価される
  • 3か月後に第13章を解き直して、成長を確かめよう

コーディングテスト、突破できるようになりましたか?