エンジニアをしていたら「競技プログラミング」という単語は何度も聞いたことがあると思います。
また、ツイッターをやっているとよく競プロの話題を見かけることもあるかと思います。
初めて競プロをやる際に、なにも読まずに一度AtCoderなどをやってみるのもいいかもしれませんが、よっぽどじゃない限り訳がわからなくて投げ出してしまうことになると思います。
今回は競プロを始めたいけど何から始めたらいいのか分からないな、、、という人向けにおすすめの本を三冊紹介します。
1, プログラミングコンテスト攻略のためのアルゴリズムとデータ構造
最初に紹介するのが「プログラミングコンテスト攻略のためのアルゴリズムとデータ構造」という本です。
競技プログラミグの全くの初心者だという人はこの本から始めるのを強くお勧めします。
このあと紹介する本も競プロの名著的な本ではありますが、難易度は若干高いため、初めて競プロをやるひとにはあまりおすすめできません。
一方この本は、競プロのことよくわからないんだけど、、、という人こそが想定読者となっていて、非常に分かりやすいです。
言語自体はC++です。
「え? C++なの?」と思われたかもしれませんが、実は競プロで多く使われているのがC++です。
競プロはもちろんどのプログラミング言語でもいいのですが、処理速度が速いためC++を使う人が多いです。
また競プロの情報の多くがC++で書かれているので、それもありC++がスタンダードとなっています。
C++自体初めてという人でも「プログラミングコンテスト攻略のためのアルゴリズムとデータ構造」であれば基本的には問題ありません。
競プロでよく使うアルゴリズムをC++で学べ、実際にコンテストに出場する際も使えます。
競プロは入り口で挫折してしまう人が結構いますが、その理由はやはりいきなり難しいものに手を出してしまうからです。
挫折せずに競プロを始めたいと思うのであればこの本から始めることを強くおすすめします。
2, プログラミングコンテストチャレンジブック
続いて紹介するのが『プログラミングコンテストチャレンジブック』という本です。
こちらの本は完全な初心者向けというわけではありませんが、競プロでよく使うアルゴリズムが網羅されています。
リファレンス的な存在として一冊手元においておくとよいかもしれません。
C++を既に知っているという人はこの本から始めてもいいかもしれませんが、もしそうじゃない場合はいきなりこの本から始めると少し大変かもしれません。
一冊目に紹介した本をまず一通り見てからこの本に取り掛かった方が安全です。
3, 最強最速アルゴリズマー養成講座
続いて紹介するのが『最強最速アルゴリズマー養成講座 プログラミングコンテストTopCoder攻略ガイド』という本です。
こちらの本は、日本の有名なプログラミングコンテストAtCoderの創始者が著者の本で、日本で競技プログラミングをやっている人だったら知らない人はいないというぐらい有名な本です。
なので、多くの人がこの本を一番最初に手に取るかと思います。
ですが、それは危険なのでやめましょう。笑
もちろんこの本は非常に素晴らしいです。競プロを知っている人が読んだら、こんなにいい本はありません。
説明が冗長すぎず、さくさくと進んでいくので知っている人からしたら非常にありがたいです。
しかし初めて競プロをやるよという人にとってはこれはちょっと酷です。
まずは一冊目に紹介した「プログラミングコンテスト攻略のためのアルゴリズムとデータ構造」を一通りやって、そのあと何度か実際にAtCoderなどのオンラインコンテストに出場してみて、さらに何か本を読みたいと思った時に読むべき本です。
その段階までいってから読むと、この本がなぜこれほどまでに有名かが分かるかと思います。
以上で競プログラミングを始めたい初心者向けの本の紹介を終わります。
競プロは最初の入りが非常に肝心です。そこで挫折しないように気をつけましょう!