『アルゴリズム=競プロ』ではなく『実務の道具』
実務でフル CS の知識を毎日使うわけではありませんが、計算量の感覚とパターンの引き出しは大きな武器です。本記事では編集部の視点で、実務で活きる学習ロードマップを公開情報をもとに整理します。CS基礎学習 もご参考に。
計算量 (Big O) の感覚
(1) O(1):定数(配列アクセス/Hash)。(2) O(log n):二分探索/平衡木。(3) O(n):1パスループ。(4) O(n log n):ソート全般。(5) O(n²)/O(2^n):二重ループ/全探索。実務では n=10万件で O(n²) は危険、というレベル感が掴めれば実害は防げます。
必須データ構造
(1) 配列・Map・Set:すべての基本。(2) Heap (Priority Queue):Top K/スケジューラ。(3) Stack / Queue:DFS/BFS のお供。(4) Trie:オートコンプリート/前方一致。(5) Graph:依存関係/最短経路。JS の Map/Set, Python の dict/set 等で代用しつつ、計算量の差を意識すること。
実務で頻出のパターン
(1) Two Pointers:ソート済み配列の探索。(2) Sliding Window:連続部分の集計。(3) Hash で重複排除:O(n) で問題解決。(4) BFS で最短/最少:レイヤー単位の探索。(5) 動的計画法:部分問題の組合せ。いずれも LeetCode で繰り返し練習すると定着します。
面接で頻出のテーマ
(1) 配列・文字列操作:50問。(2) 木・グラフ探索:30問。(3) DP:20問。(4) ソート・探索:20問。(5) ビット演算/数学:10問。LeetCode の Easy → Medium を130問解けば多くの面接は突破可能です。転職サイト比較 もご参考に。
学習リソース
(1) 『Cracking the Coding Interview』:王道。(2) NeetCode 150:効率的な厳選問題集。(3) LeetCode:実機演習。(4) 『アルゴリズム実技検定』:日本語の系統学習。(5) AtCoder:競プロ系。時間が限られるなら NeetCode 150 がコスパ最強です。
失敗しがちなパターン
(1) 『俺は競プロ嫌い』で全部避ける:感覚すら身につかない。(2) 全分野を浅く:身につかず忘れる。(3) 解答を見る前に粘る:時間効率が悪い。(4) 1回解いて満足:間隔反復が必要。(5) 本番形式で時間を測らない:面接で時間切れ。対策は、(1)実務問題から、(2)頻出50問集中、(3)15分悩んで解答参照、(4)1週間後に再演習、(5)25分タイマー、です。