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

コーディングテストの全体像 — paiza・AtCoder・面接の違いと学習ロードマップ

6
この章の目次開く

「コーディングテスト」と一口に言っても、paizaのスキルチェック、AtCoderのコンテスト、外資系面接のLeetCode対策では、性質がけっこう違います。本書の最初の章では、この世界の地図を描きます。自分がどこを目指すのかが決まれば、学ぶべきものと順番も決まります。

学習者学習者

転職サイトで「コーディングテストあり」って書いてある企業が増えてて…。paizaのランクも履歴書に書けるって聞くし、何から手をつければいいのか分からなくて。

その状況の人にこそ読んでほしい章です。まず4つの「場」を比べてみましょう。

4つの場の比較

paizaAtCoderLeetCode採用面接
形式オンライン判定(ランクD〜S)週次コンテスト(レートと色)問題集(Easy〜Hard)対話しながらその場で解く
主な用途日本の転職・就活競技・スキル証明外資系面接対策採用選考そのもの
時間制約問題ごとに制限あり100分で複数問なし(面接では45分程度)30〜60分
言語自由自由自由自由が多い
特徴実務寄りの読解量が多い数学・アルゴリズム寄り面接頻出パターンの宝庫思考過程の説明も評価対象

paiza — 日本の転職市場で最も実用的

paizaのスキルチェックはD〜Sのランク制で、Bランク以上が「アルゴリズムの基礎ができる」目安として扱われます。問題文が長く、仕様を正確に読み取って実装する力の比重が高いのが特徴です。ランクは求人応募の条件にも使われるため、転職での実利が最も直接的です。

AtCoder — 実力の「色」が付く

AtCoderは毎週のコンテストでレートが変動し、レート帯ごとに色が付きます(灰→茶→緑→水色→…)。**茶色で上位約30%、緑で上位約10%**に入るイメージです。エンジニアの技術ブログで「入茶しました」「入緑しました」と報告されるのを見たことがあるかもしれません。継続的な腕試しの場として最良です。

LeetCode — 外資系・グローバル企業の定番

GAFAをはじめとする外資系企業のコーディング面接は、LeetCodeのMedium前後の問題が中心と言われます。面接頻出パターンが最も体系化されているのがこの世界で、本書のPart 2〜3で扱うパターンの多くはLeetCode文化圏で磨かれたものです。

採用コーディング面接 — 解くだけでは終わらない

面接では、正解へたどり着くことに加えて考えを声に出して説明する力が評価されます。「まず全探索だと計算量がO(N²)なので、ハッシュマップでO(N)に落とします」——このような会話ができることが、そのまま評価になります。本書で解法に名前を付けて学ぶのは、この「説明できる」状態を作るためでもあります。

実は求められる知識は共通している

ひらめきのイラスト

4つの場は雰囲気こそ違いますが、問われる中身はほぼ共通です。

  1. 計算量の見積もり — この解き方で制限時間に間に合うか(第2章)
  2. データ構造の使い分け — 配列・ハッシュマップ・スタック・木(第3〜6章)
  3. 解法パターン — 全探索・二分探索・貪欲法・DP(第7〜11章)
  4. パターン認識 — 問題文からどの解法かを見抜く(第12章)

つまり、1セットの知識で4つの場すべてに通用します。本書はこの共通部分を、paiza B〜Sランク・AtCoder灰〜緑・面接の標準的な出題レベルに絞って鍛えます。

学習ロードマップ

学習者学習者

アルゴリズムの本って分厚いのが多いよね…。全部やらないとダメなのかな。

全部やる必要はありません。出題頻度は偏っています。頻出の少数パターンを確実にするほうが、網羅を目指すより先にランクが上がります。本書のロードマップは次の通りです。

Part 1 準備編(第1〜2章)
  └ 計算量というモノサシを手に入れる

Part 2 データ構造編(第3〜6章)
  └ 配列・文字列 → ハッシュ → スタック・キュー → 木・グラフ
     「データの持ち方」の道具箱を揃える

Part 3 解法パターン編(第7〜11章)
  └ 全探索 → ソート・二分探索 → 貪欲法 → DP → グラフ応用
     「解き方」の道具箱を揃える

Part 4 実戦演習編(第12〜13章)
  └ 問題文 → パターンの変換訓練と模擬テスト

付録
  └ TypeScript環境構築 / スニペット集 / その先のロードマップ

目安として、paiza Bランク・AtCoder茶色なら第8章までpaiza A〜S・AtCoder緑を狙うなら第11章までが必要範囲です。

本書の前提と言語について

本書のコードはTypeScriptで書きます。理由は2つあります。

  • Web開発でTypeScript/JavaScriptを使っている人が、新しい言語を覚えずに始められる
  • paiza・AtCoderともNode.js(TypeScript)での提出に対応している

JavaScriptの文法(配列操作、関数、分割代入など)に不安がある場合は、先に『JavaScript入門』で基礎を固めることをおすすめします。また、データ構造とアルゴリズムの理論的な背景は『コンピュータサイエンスの基礎』第2章 データ構造第3章 アルゴリズムと計算量が理論編として対応しています。本書は「解くための実践編」という位置づけです。

メンターメンター

競技プログラミングの上位勢はC++が主流ですが、本書が対象とする範囲(paiza S・AtCoder緑まで)ならTypeScriptで実行速度がネックになる場面はほぼありません。言語より解法パターンの習得が先です。

まとめ

  • コーディングテストの場は主に4つ: paiza(転職実利)、AtCoder(継続的な腕試し)、LeetCode(外資系対策)、採用面接(説明力も評価)
  • 見た目は違っても、問われる中身は「計算量・データ構造・解法パターン・パターン認識」で共通
  • 頻出パターンに絞った学習が最短ルート。paiza B・AtCoder茶なら第8章まで、A〜S・緑なら第11章まで
  • 本書はTypeScriptで進める。対象レベルなら言語の速度差は問題にならない

次章では、すべての土台になる「計算量」を身につけます。「この解き方で間に合うか」を、コードを書く前に見積もれるようになりましょう。