計算量(O記法)の読み方と実測のしかたから、配列・探索・ソート・スタック・キュー・ハッシュテーブル・木・ヒープ・グラフ探索・動的計画法・貪欲法・文字列アルゴリズム、そして「問題を解く手順」まで。全20レッスンで、自分のコードを見て「これは遅い」と言えるようになるところまで進みます。外部ライブラリは使いません。コードと実行結果はすべて Python 3.14.2 で実際に動かしたものです。
全20レッスンを7つの章に分けています。第1章(第1〜2回)がこのコースの核で、以降は毎回そこで作った「測る」道具を使います。第1回から順に進めるのがおすすめです。
※ 競技プログラミング向けではありません。実務のコードを速くする話として書いています。
※ サンプルはブラウザ内で実行できます(外部ライブラリは使いません)。件数の大きい計測は、手元の python3 で試してください。
このコースの核になる 2 回です。計算量(O記法)の見方と、それを自分で測る方法。n を 2 倍にして時間の伸びを見る、という道具をここで手に入れます。
Python の list が内部でどう並んでいるかを押さえ、線形探索と二分探索を書きます。「何回探すか」で手法を選ぶ、という判断もここで身に付けます。
手書きの O(n^2) 3 つ、マージソート、クイックソート、そして組み込みの Timsort。最悪ケース・安定性・定数倍という、比較の軸がひととおり出そろいます。
スタック・キュー・連結リスト・ハッシュテーブル・木・ヒープ。実務でいちばん効く「in を set に変える」(1,058 倍)もここです。
路線図を題材に、幅優先探索とダイクストラ法を書きます。深さ優先探索では、Python の再帰が深さ 1000 で止まる話にもぶつかります。
動的計画法と貪欲法。「同じ計算を 2 度しない」と「その場の最善を選ぶ」。後者は速いかわりに、いつも正しいとは限りません。
文字列の 2 つの型(2 つのポインタ・スライディングウィンドウ)と、問題を解く手順そのもの。早見表を持ち帰って終わります。
全20レッスンを終えたら、次は書けるようになった判断を実際のコードに当てる番です。Python 入門コース で書き方そのものを固める、Python & 機械学習 入門コース でデータを扱う、Go 入門コース で計算量と実行速度の両面から見直す——どれもこのコースの続きになります。メンバーシップで全コースが解放されます。