この記事は、
AtCoderを最近始めたけど、どんな本で学べばいいか分からない・・・
勉強におすすめな本ってあるの…?
勉強はしたいけど難しい本は読みたくない…!
そんなふうに思っている方に向けて書いています。
はじめまして、私は、情報系大学に通う、情報系大学生のハル(Blog_IT_haru)です。
私も、最近AtCoderを始めました。
そこで、色々本を私も学ぶために、探しました。
しかし、中々満足なものが見つかりませんでした。
AtCoderというものは、会社設立2012年6月20日と、とても歴史が長いものです。
歴史が長いということは、AtCoderのおすすめされている本も、少し古いものも増えてきています。
今回の記事では、古い本も、中には紹介しておりますが、補足もしているので、ご安心ください。
また、基本的には”本”を紹介しておりますが、勉強するにあたって、参考にすると良いサイトなども補足として、紹介しておりますので、ぜひご活用ください。
AtCoderを元に書かれている本
問題解決のための「アルゴリズム×数学」がきちんと身につく本
問題解決のための「アルゴリズム×数学」がきちんと身につく本は、最近(2021/12/22)に、発売された本です。
つまり、最近のAtCoderを反映された本であるため、最近始めた方にも、参考になります。
私もこの本を購入しましたが、フルカラーなので読みやすく、難しい本に抵抗がある初心者にも、とても手に取りやすい本です。
ちなみに、サンプルコードはC++です。
この本は、AtCoderで、レッドコーダーである、@e869120さんによって書かれた本です。
@e869120さんのTwitterを見ていただくと、この方は、以下のような、スライドなどをT挙げられており、とても完成度が高いです。
そのため、本も、分かりやすいものであると、確証ができるはずです。
【数学パズル】
— E869120@本発売 (@e869120) 2022年1月6日
スコアができるだけ大きくなる経路を考えてみましょう。 pic.twitter.com/PTYHXtDWpo
この本の練習問題は、AtCoderに特設コンテストがあり、そこで、答え合わせなどを行うことができるため、実践的にも学ぶことができ、とても便利です。
以下より、AtCoderのページに飛ぶことができます。
以下より、ぜひ見てみてください。
Amazonでは、商品イメージより、チラ見せ、楽天でも、アプリで立ち読みより、少し、内容を確認することが出来ます。
2022年2月現在、Amazon、楽天では、電子書籍もありますが、Yahooは、紙書籍のみです。
問題解決力を鍛える!アルゴリズムとデータ構造
この問題解決力を鍛える!アルゴリズムとデータ構造は、最近(2020/10/2)に、発売された本です。
そのため、この本は、最近のAtCoderをしっかりと反映されています。
この本は、読んでみて、問題解決のための「アルゴリズム×数学」がきちんと身につく本よりは、フルカラーではないのもあって、ビジュアル的な分かりやすさは少ないと感じました。
ただ、高校の参考書のようにシンプルな作りで、効果的にカラーが使われているため、参考書のような本に慣れている方にとっても、見やすく、分かりやすい本です。
ちなみに、サンプルコードはC++です。
この本の著者の方は、Qiitaやはてなブログで、AtCoderやアルゴリズムなどについて書かれたりしています。
アルゴリズム本、書きました! - けんちょんの競プロ精進記録
ニックネームで、けんちょんさんが書かれているため、通称、けんちょん本です。
また、この方は、とても有名な、AtCoder に登録したら次にやること ~ これだけ解けば十分闘える!過去問精選 10 問 ~ - Qiitaを公開されている方です。
なので、これを読んでいただければ、文章などのイメージはできるはずです。
ただ、演習問題のページは、AtCoderにはなく、自分でやってもらう形になります。
商品については、以下より確認いただけます。
アルゴリズム実技検定
そもそも、アルゴリズム実技検定とは、
世界最大級の競技プログラミングコンテストサイトを運営するAtCoder社による、
1からプログラムを作成する能力を問う、実践を想定した日本初の検定です。
この本は、アルゴリズム実技検定の、公式テキストになります。
初心者~中級者向けのため、初心者の方にも、おすすめの一冊になります。
ただ、この本は、Pythonのため、基本C++で行われているAtCoderという点で考えると、Pythonでやりたい!と考えている人にのみ、おすすめできる本ということになります。
AtCoder社の社長である、高橋直大さんが監修しているため、とても信頼できる本であります。
アルゴリズム実技検定は、以下より受験できます。
3, 6, 9, 12月第一土曜日問題更新ですが、過去問として、AtCoder上に載っていますので、確認してみてください。
以下より確認できます。
その他の競技プログラミングを元に書かれている本
プログラミングコンテストチャレンジブック
こちらは、昔から存在する本で、通称”蟻本”です。
発売日は、2012/1/28で、だいぶ古い本ですね。
蟻本に載っている例題はほぼすべてPOJ*1上の問題で、そもそも、AtCoder用に作られていません。
また、この本は、C++のコードを掲載されていますが、初心者には、少し内容が難しいと感じることが多々あるかもしれません。
C++について、全く知らない本当の初心者には、こちらはおすすめできません。
POJを元にしている本ではあるんですが、Qiitaで、先程紹介した『問題解決力を鍛える!アルゴリズムとデータ構造』の著者のけんちょんさんによるAtCoder版蟻本と称した記事が書かれています。
そのため、この本+以下の記事で、対応することが可能です。
難易度は、そこそこ高めです。
以下より、本を確認できます。
プログラミングコンテスト攻略のためのアルゴリズムとデータ構造
こちらも昔から存在している競プロ本の一つで、通称、TLE本や螺旋本です。
こちらは、AOJ*2を元に書かれており、AtCoderを対象とはしていません。
掲載コードは、疑似コードで、演算子などは、C/C++を模倣したものを使用しています。
この本について、AtCoder社長であるchokudaiさんは、以下のように評価しています。
プログラミングコンテスト攻略のためのアルゴリズムとデータ構造、通称TLE本とか螺旋本とか。
— chokudai(高橋 直大)🍆@AtCoder社長 (@chokudai) 2021年10月5日
他の本より教科書的要素が強い印象で、〇〇法、〇〇構造とはこういうものです、的な部分が強い印象。競プロ強くなるより手法を知りたい人にはお勧め度高め。https://t.co/7duuCsf03Z
このような評価から見ても、本当の競プロ初心者には、おすすめできず、少し慣れてきてから、取り組むのが良いです。
ただ、難易度は、そこまで高くないです。
以下より確認することができます。
オンラインジャッジではじめるC/C++プログラミング入門
こちらも、昔から存在する本です。
ただし、こちらも、AOJを元にしている本です。
AOJの問題と、連動しています。
AOJのページは以下です。
http://judge.u-aizu.ac.jp/onlinejudge/
会津大学のオンライン・ジャッジシステム(AIZU ONLINE JUDGE)のコース問題を題材にした公式解説書です。引用:https://www.amazon.co.jp/dp/B00L7FYBMK/ref=dp-kindle-redirect?_encoding=UTF8&btkr=1
また、本当の基礎の本なので、本格的にやりたいと思った際には、あまり向かないかもしれません。
AtCoder社長のchokudaiさんは、以下のように評価されています。
ここからは番外。オンラインジャッジではじめるC/C++プログラミング入門。
— chokudai(高橋 直大)🍆@AtCoder社長 (@chokudai) 2021年10月5日
Aizu Online Judge版APG4bだと思ってもらっていいと思う。競プロだけにフォーカスしてるものではなくて、競プロの仕組みを使ってC/C++を学ぼう!って感じのコンセプト。言語入門書として純粋に良い。https://t.co/jeSPsyzga2
以下より、確認できます。
※AmazonのKindleでは、KindleUnlimitedで無料で読むことができます。
最強最速アルゴリズマー養成講座
この本は、AtCoder社長、高橋直大(chokudai)による本です。
通称、チーター本です。
問題は、Topcoder*3を引用しているので、AtCoder用の本、ということではありません。
ただ、この本は、初心者には分かりづらいため、本当の初心者には、おすすめできないです。
中級者向けですね。
考え方を学びたい方にはおすすめです。
chokudaiさんのツイートは以下です。
最強最速アルゴリズマー養成講座、通称チーター本。たまにchokudai本とかも呼ばれてる。自分が書いたやつ。
— chokudai(高橋 直大)🍆@AtCoder社長 (@chokudai) 2021年10月5日
問題がtopcoder引用だから今の時代に合ってないんだけど、アルゴリズムを多数紹介するより、考え方をしっかり書いてる、教科書半分読み物半分みたいな立ち位置。https://t.co/RQ2doc5GFX
以下より、確認できます。
Amazonなどで、試し読みしてみるのがおすすめです。
その他アルゴリズムを勉強するための本
以下紹介する本は、競技プログラミング向けの本ではなく、アルゴリズムを学びたい方におすすめな本たちです。
アルゴリズム図鑑
こちらは、そもそも、アプリだったものが書籍化したものになります。
並び替えのソートや、グラフ探索などについて、ビジュアルで理解できる、とても良いアプリです。
私も購入しており、とっても分かりやすくておすすめです。
書籍で読みたい方は、本、ビジュアルで動き込でアルゴリズムを学びたい方はアプリというのが良いです。
アプリは以下になります。
無料でも、ある程度のアルゴリズムは見ることができます。
こちらを本に起こしたのが、以下の本になります。
アプリを使ってみてから、本にも興味が出れば、使ってみるのがおすすめです。
以下より確認できます。
Amazon、楽天では電子書籍がありますが、Yahooは紙書籍のみです。
C言語で学ぶアルゴリズムとデータ構造
この本は、大学の授業で使ったのですが、とても良い本だと思います。
アルゴリズムを全体的にC言語で網羅しており、分かりやすい本です。
以下からは、全ソースプログラム、演習問題の解答プログラム、第1章 基本的なアルゴリズム、第7章 集合、索引をダウンロードすることができます。
BohYoh.com【著書】新・明解 C言語で学ぶアルゴリズムとデータ構造《ダウンロード》
また、出版社のページでは、アルゴリズム体験学習ソフトウェアをダウンロードすることができ、アルゴリズムの動きをビジュアル的に確認できます。
「アルゴリズム体験学習ソフトウェア」 | SBクリエイティブ
C言語で、アルゴリズムを学んでいた私にとっては、とても分かりやすい本でした。
コードも書いてありますし、詳細な説明もあり、分かりやすいです。
以下より確認できます。
Amazon、楽天では電子書籍がありますが、Yahooは紙書籍のみです。
また、同じ著者で、『Pythonで学ぶアルゴリズムとデータ構造』という、Python版、『Javaで学ぶアルゴリズムとデータ構造』というJava版もあります。
Python版は、以下より確認できます。
Java版は、以下より確認できます。
アルゴリズムとプログラミングの図鑑
とてもわかり易く、イラストなどで説明されていて、見やすい本です。
アルゴリズム図鑑と似た感じだと感じるかもしれませんが、こちらには、アルゴリズムの紹介と、図や絵、またコードがついているので、より実践的でありながら、初心者向けで、手に取りやすい感じです。
コードも、C言語以外に、JavaScript,Java,PHP.Swift,Python,BASIC,Scratchなどのコードもついているので、とてもお得感があります。
全体的にとても分かりやすく、初心者で、難しい本が嫌だ!という方には、とても向いています。
以下より確認できます。
難易度・価格・おすすめ度などのまとめ
難易度については、目安としてお考えください。
書籍名 | 定価全て紙版,税込み | 掲載言語 | 難易度 | AtCoder対応 | 電子書籍 |
---|---|---|---|---|---|
問題解決のための「アルゴリズム×数学」がきちんと身につく本 | 2948円 | C++ | やさしい | ◯ | ありYahooは無し |
問題解決力を鍛える!アルゴリズムとデータ構造 | 3300円 | C++ | ふつう | ◯ | あり |
アルゴリズム実技検定 | 3828円 | Python | ふつう |
◯ ※公式テキスト |
あり |
プログラミングコンテストチャレンジブック | 3608円 | C++ | やや難しい |
△AtCoder版!蟻本で対応 POJに対応 |
あり |
プログラミングコンテスト攻略のためのアルゴリズムとデータ構造 | 3938円 | 疑似コード一部C/C++模倣 | やさしい | ×AOJに対応 | あり |
オンラインジャッジではじめるC/C++プログラミング入門 | 3135円 | C/C++ | やさしい | ×AOJに対応 | あり |
最強最速アルゴリズマー養成講座 | 3080円 | C#,Java,C++ | やや難しい | ×AOJに対応 | あり |
アルゴリズム図鑑 | 2618円 | なし | 超やさしい | × | ありYahooは無し |
C言語で学ぶアルゴリズムとデータ構造 | 2750円 | C言語 | ふつう | × | ありYahooは無し |
アルゴリズムとプログラミングの図鑑 | 2739円 | 様々 | 超やさしい | × | あり |
まとめ
いかがでしたか?
AtCoderを始めたいと思っている、初心者の方に参考になれば嬉しいです。
この記事がいいな、と思ってくれたら、SNSなどで拡散したり、
ブックマークやコメントなどしてくれると励みになります!
下の方とサイドバーにある、サポートもお待ちしています!
更に、読者になってくれたら、お返しに私も読者になります!
また、この記事の内容についてなにかありましたら、
お問い合わせ、コメント、TwitterのDMなどによろしくお願いします。
それでは。
注釈
*1:PKU JudgeOnlineのことで、PKUやPOJと略される。C、C++、Java、Fortranが使用可能であり、北京大学により運営されている。リンクは、http://poj.org/である。
*2:Aizu Online Judgeのこと。会津大学により運営されている。サイトリンクはhttps://judge.u-aizu.ac.jp/onlinejudge/である。
*3:世界三大競技プログラミングサイトの一つで、最も歴史が長い。リンクはTopcoder Top Technology Talent On-Demand。AtCoderなどと違い、標準入出力を使用しないのが特徴