最近のプログラミング環境ではフレームワークが充実してきて、フレームワークの使い方を覚えれば結構面白いことが簡単にできてしまう。それでもアルゴリズムを理解することは今でも重要だし、単に便利なライブラリを組み合わせただけのものよりずっと可能性が広がる。
しかし、私は実のところアルゴリズムの勉強に役立つ本の決定版を知らない。『珠玉のプログラミング』とか『達人プログラマー』とかあるいは『C言語による最新アルゴリズム事典』という有名な本は読んだことがあり、それはそれで優れていると思うけれど、文句なしにオススメとは言えないと思っている。事典はあくまで事典だし、他の本も思いのほかあっさりしていたと感じた。
その折に登場したのが本書である。プログラミングコンテスト向けとされているけれど、コンテストには関心はないが単にプログラミングを学んでみたいという人にも十分勧められる良書だと思う。BFSとかDFSのような基本的なアルゴリズムから始まって、かなり難しいものまで一通り紹介されている。本書を一通り仕上げれば基礎的なアルゴリズムは理解していると自信を持って言っていいだろう。コンテスト向けであるので問題も100問以上載っていて、解説しっぱなしで終わることがない。どのような場面で使えばよいのかまで同時に理解できるように構成されている。
勉強の仕方は人によって違うだろうが、私の場合はこういう本はひたすら手を動かす。目で追って理解した気になっても案外実際使おうと思うと忘れていることもあるので、すべての項目について読んだ後に自分で手を動かしてコードを書いてみる。その際にコピペ(CDは付属していない)では理解が悪いだろうし、丸写しもあまりよくない。コーディングスタイルは人によって違うだろうから、コードを読んで自分のスタイルで記述して動作させてみることを1冊分通してやってみることが重要だろうと思う。そうしているうちによく使うパターンについては理解が進み、最初のうちは本を見ながら書いていても、半分を過ぎたあたりからは予測ができるようになって楽になってくると思う。例えばSTL(コンテナ)の頻出パターンは手が覚えるだろう。そうすると自分でオリジナルのコードを書くときにはすぐに書けるはずで、それはもうあなたの実力である。