こんにちは suganooです。
最近たまたまアルゴリズムの本を読んでしまったのですが、それからというものアルゴリズムの勉強にハマってしまっています。
10年弱前にもTopcoderとか面白そうだなと思って挑戦してみたのですが
全く歯が立たなかったんですよね。
当時はアルゴリズムの勉強をしたものの、よくわからない。
でもどういうわけか最近読み返してみるとある程度わかる、いや難しいのは変わらないんですけどがんばればわかるかもと気持ちが変わってきました。
これまでいろいろアルゴリズムの本を読んできましたが、点と点が結びついてきた感じがします。
今回はそのアルゴリズムの勉強をするにあたって、この本は良かったー!というものを紹介したいと思います。
オススメ本 4+1冊
まずはこれ。
「なっとく!アルゴリズム」

- 作者: アディティア・Y・バーガバ,株式会社クイープ
- 出版社/メーカー: 翔泳社
- 発売日: 2017/02/01
- メディア: 単行本(ソフトカバー)
- この商品を含むブログを見る
アルゴリズムの勉強をまったくしたことが無い人はこれから読んでみるのはいいんじゃないかと思います。
動的計画法とか最初につまづきましたがこれで理解できました。
で、次からの三冊はほんとにおすすめです。
「プログラミングコンテスト攻略のためのアルゴリズムとデータ構造」

プログラミングコンテスト攻略のためのアルゴリズムとデータ構造
- 作者: 渡部有隆
- 出版社/メーカー: マイナビ出版
- 発売日: 2015/01/30
- メディア: Kindle版
- この商品を含むブログを見る
これはかなり!!!良かった本です。
今も写経しながら読んでいます。
ソートはほぼ全般的なやり方から乗ってるんですけど、後半部分も中級者向けのアルゴリズムが広く解説されててとても勉強になります。
グラフ理論とか動的計画法の応用とか整数論とかまで網羅されているのはほんとにいいです。
これを読んでAOJも挑戦しているところです。
お次はこれ
「プログラミングの宝箱 アルゴリズムとデータ構造」

- 作者: 紀平拓男,春日伸弥
- 出版社/メーカー: SBクリエイティブ
- 発売日: 2011/03/26
- メディア: 単行本
- 購入: 15人 クリック: 255回
- この商品を含むブログ (31件) を見る
これもわかりやすかったです。
表紙が地味なんですけど内容はいいです。
最初にアルゴリズムの勉強を始めたときはこれを読んでましたが、おー!っと学びになったところが多いです。
3冊目はこれ
有名なチーター本です。
「最強最速アルゴリズマー養成講座」

最強最速アルゴリズマー養成講座 プログラミングコンテストTopCoder攻略ガイド
- 作者: 高橋直大
- 出版社/メーカー: SBクリエイティブ
- 発売日: 2013/08/14
- メディア: Kindle版
- この商品を含むブログを見る
AtCoderを主宰している高橋直大さんの本です。
ほんとこれも学びになった本でした。
ちょっとレベルが中級者向けになってきますが典型問題などを解説してるのでいい本です。
コンテストに挑戦してみようかなと思ってたのですが、そもそもどうやってコードを書くの?関数は?などと疑問がありました。
そういうところも解消できたのが良かったです。
この本は4,5回読んだ覚えがありますが、何度となく読み返したくなります。
ちょっと後半など間違ってねーかなと思う小さな部分もありましたが(よく覚えてない)、全体内容としてはかなり力がつきます。
おまけ
蟻本
「プログラミングコンテストチャレンジブック」
![プログラミングコンテストチャレンジブック [第2版] ?問題解決のアルゴリズム活用力とコーディングテクニックを鍛える? プログラミングコンテストチャレンジブック [第2版] ?問題解決のアルゴリズム活用力とコーディングテクニックを鍛える?](https://images-fe.ssl-images-amazon.com/images/I/41bHxtpurqL._SL160_.jpg)
プログラミングコンテストチャレンジブック [第2版] ?問題解決のアルゴリズム活用力とコーディングテクニックを鍛える?
- 作者: 秋葉拓哉,岩田陽一,北川宜稔
- 出版社/メーカー: マイナビ
- 発売日: 2012/01/28
- メディア: 単行本(ソフトカバー)
- 購入: 25人 クリック: 473回
- この商品を含むブログ (36件) を見る
うーんこれはちょっと自分には難しかったですね。
ちょっと解説が抽象的過ぎて中級者上級者向けです。
自分もある程度問題が解けるようになったら読み直したいと思ってます。
オンラインコンテスト
プログラミングコンテストのサイトはたくさんあります。
最初にやるにはまあこれかなーというのを挙げておきます。
AtCoder
atcoder.jp
Beginner Contestは毎週やってますが、E, Fは俺には難しいっす。
AIZU ONLINE JUDGE
judge.u-aizu.ac.jp
「プログラミングコンテスト攻略のためのアルゴリズムとデータ構造」
の問題はここからでていますね。
自分も只今ちょこちょこ問題を解いています。
Googleがやってる code jam
codingcompetitions.withgoogle.com
なんも問題を見てないですがやっぱ難しそうですね。
でもやってみたいなー
他にもTopcoderやcodeforceなどいっぱいありますが、たくさんのサイトを見るのではなく深く理解することが大事なので省略します。
ほんとこの歳になってアルゴリズムの勉強にハマるとは思いませんでした。
自分のプログラミングスキルをあげるために挑戦してみるのはどうでしょうか。
ではでは