「なっとく!アルゴリズム」を読んで

転職の面接などでコーディングテストが増えているということで、学生時代に習ったきりですっかり錆びついてしまっているアルゴリズムの勉強を兼ねて読んでみました。

なっとく! アルゴリズム

なっとく! アルゴリズム

良かったところ

非常に平易な文で説明してくれているので、非常に理解が楽にできました。もともと情報系の大学に出ていたこともあるのでベースの知識があったということもあると思いますが、複雑な数式などを用いずに多くアルゴリズムを説明している点は読者にとって非常に助かるところかと思います。また、説明に使われる挿絵が非常に多く、これも理解を大変助けてくれます。Pythonでのサンプルコードも多く、プログラマー的にはプログラムへの適用についても学べる点も良いかと思います。

アルゴリズムマニアというわけではないので(むしろ個人的には苦手な部類)、カバーしてくれているアルゴリズムが十分かどうかはわかっていないのですが、ビッグオー表記やソート、データ構造などのベーシックな部分は抑えているので、ここから更にAdvancedな内容に進むためのベースとなる知識を抑えるという意味では、良い本に思います。何より、これらアルゴリズムに対してアレルギー的な反応を示さないように平易な文を用いて説明しているので、より高度なアルゴリズムに対する学習も好奇心を持って進められるのではないかと思います。

良くなかったところ

良いところで『非常に平易な文』と書きましたが、一方で翻訳が少し直訳的で少し読みづらいように感じました。おそらく原著は英語で非常にやさしく書かれた文だと予想できるのですが、上記によりところどころで読みづらさを感じました。原著をなるべくそのまま伝えようとした監訳者の想いもあると思いますが、読者によってはこの部分に嫌悪感を抱く人がいるかもしれません。

あと細かいところですが、練習問題の解答が一番後ろにまとまっている点は、問題を解きながら読み進めるのには少し不便だったように感じています。次のページや章末などにまとまっていると、もう少し読み進めやすかったかもしれません。

最後はKindle限定ですが、Kindle版は固定レイアウトなので、Kindle PaperwhiteiPhoneでは文字が小さくて読めないですね。私はiPad miniで読みました。Kindle版を購入しようとしている方はご注意ください。

まとめ

読みやすい本でアルゴリズム初学者の導入としては良い本かと思います。数学や情報のバックグラウンドがなくても読み進められる内容かと思うので、文系出身の方でも問題ないかと思います。

ただし、これを競技プログラミングに参加できるかと言うと、なかなか難しい気がするので、競技プログラミングを目指す方は別途他の本で知識を補強が必要かと思います。

私も次はアルゴリズム本として人気のある螺旋本あたりを読んで、より実践力のあるアルゴリズムの知識を身につけたいと思います。