【書評】問題解決力を鍛える!アルゴリズムとデータ構造
【書籍】
【本記事の前提】
本記事は、書籍「問題解決力を鍛える!アルゴリズムとデータ構造」の概要を紹介する内容となります。もし本記事を読み、アルゴリズムを学ぶことに興味が出てきたという方は、是非書籍を手にとってご確認下さい。
【書籍の概要】
・競技プログラミング、特に 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章:難問対策
【おわりに】
普段のエンジニア業務でコードを書く分には、可読性だったり、メンテナンス性を意識して書くことが多いのですが、本書を手にとってからは、計算量をオーダー記法で意識するようになりました(とはいえ、普段は大量データの多重ループのような処理などは滅多に無いのですが)
数学的な側面を持つ高速なアルゴリズムは、パッ見、魔法と何ら変わりありません。多くの呪文を唱えれるよう、本書籍の精読を継続していきたいと思います。
この記事が気に入ったらサポートをしてみませんか?