【書評】問題解決力を鍛える!アルゴリズムとデータ構造

【書籍】

【本記事の前提】

本記事は、書籍「問題解決力を鍛える!アルゴリズムとデータ構造」の概要を紹介する内容となります。もし本記事を読み、アルゴリズムを学ぶことに興味が出てきたという方は、是非書籍を手にとってご確認下さい。

【書籍の概要】

・競技プログラミング、特に Atcoder 対策の意味合いが強い一冊です。
・Atcoder過去問ベースに、解法としていくつかのアルゴリズムを、図解を駆使してわかりやすく説明しています。
・ただし、この書籍を理解しながら読み進めるには、ある程度のプログラミング経験や、基礎的な数学的知識が必要です。

【著者の方のQiita記事】

AtCoder とは?という方は、下記のQiita記事を参考にしてください。


【こんな人におすすめ】

・競技プログラミングに興味がある人(書籍ではC++ベースでの解説です)
・Atcoderの簡単な問題(ABレベル)は解けるが、数学的考察(計算量対策)や、アルゴリズムの知識が無いとほぼ正答を得られない問題(Cレベル以降)の対策として、基本的な解法を学びたい人

【実際の AtCoder C レベルの難易度は?】

Cレベルで出題される難易度の確認の参考に、下記に過去コンテストページのリンクを用意しました。

AtCoder Beginner Contest 112: 設問C Pyramid

【書籍の目次】

本書を隅々まで理解できると、水色コーダーまで成長できそうな充実の内容です。ちなみに、本NOTEの著者は、第7章までの精読であり、まだまだ修行中の身です。

第1章:アルゴリズムとは
第2章:計算量とオーダー記法
第3章:設計技法(1):全探索
第4章:設計技法(2):再帰と分割統治法
第5章:設計技法(3):動的計画法
第6章:設計技法(4):二分探索法
第7章:設計技法(5):貪欲法
第8章:データ構造(1):配列、連結リスト、ハッシュテーブル
第9章:データ構造(2):スタックとキュー
第10章:データ構造(3):グラフと木
第11章:データ構造(4):Union-Find
第12章:ソート
第13章:グラフ(1):グラフ探索
第14章:グラフ(2):最短路問題
第15章:グラフ(3):最小全域木問題
第16章:グラフ(4):ネットワークフロー
第17章:PとNP
第18章:難問対策

【おわりに】

普段のエンジニア業務でコードを書く分には、可読性だったり、メンテナンス性を意識して書くことが多いのですが、本書を手にとってからは、計算量をオーダー記法で意識するようになりました(とはいえ、普段は大量データの多重ループのような処理などは滅多に無いのですが)

数学的な側面を持つ高速なアルゴリズムは、パッ見、魔法と何ら変わりありません。多くの呪文を唱えれるよう、本書籍の精読を継続していきたいと思います。


この記事が気に入ったらサポートをしてみませんか?