おすすめサイト/書籍
アルゴリズムやプログラミングの学習において、当サイトがおすすめするサイトや書籍をご紹介します。
おすすめサイト
コンピュータサイエンス・プログラミング
Qiita の記事
Qiitaは、プログラミングに関する知識を記録・共有するためのサービスです。
多くの投稿が集まり、アルゴリズムに関する記事や競技プログラミングに関する記事もあります。
競技プログラミングに関しては、レッドコーダーが教える、競プロ・AtCoder上達のガイドライン【初級編:競プロを始めよう】 などがおすすめです。
GeeksforGeeks (英語)
コンピュータサイエンスについてのポータルサイト。プログラミング・アルゴリズム・データ構造に関する記事が多くあります。
英語がある程度分かるなら、このサイト内で検索すれば多くの疑問が解決するはずです。当サイトも参考にしています。
競技プログラミングのコンテストサイト
競技プログラミングとは、プログラミングで様々な問題を解くことを競うコンテストのことです。ゲーム感覚で、アルゴリズムとそれを実装する力を身につけることができます。
AtCoder
競技プログラミングのコンテストを開催する国内最大級のサイトです。まずはここからはじめてみましょう。以下のような特徴があります。
- 日本語で競技プログラミングの問題が解ける
- 問題の質が非常に高い
ゲーム感覚で問題を解いて学習ができる上、就職にも役立つという素晴らしいサイトです。
Codeforces (英語)
ロシア発のコンテストサイトです。世界的には最大規模となっています。
AtCoder よりもコンテストの開催頻度が多いことが特徴です。慣れてきたらこちらに参加してみるのも良いでしょう。
ただ英語が読めないと問題を読むことができないので、英語の勉強をするか、google 翻訳などに頼ることになります。
オンラインジャッジ
様々なコンテストの過去問を集めて、オンライン上でジャッジしてくれるサイトがあります。
AOJ (Aizu Online Judge)
会津大学の運営しているオンラインジャッジサイトです。特にコース問題は多くの教育的な問題があります。
yukicoder
yuki さんの個人運営によってはじまった「競技プログラミングのスキルの練習として、回答したい人と出題したい人をつなぐ」サービスです。様々な問題があります。
その他
C++入門 AtCoder Programming Guide for beginners (APG4b)
「競技プログラミングを始めてみたいがプログラミングは初心者」という方にオススメ。前述のAtCoder 公式の C++ 入門 です。
まずはここからはじめて、プログラミングに慣れていきましょう。
Colaboratory
オンライン上で Python の Jupyter ノートブック を実行できます。環境設定など無しにPythonを使用することができるのでおすすめです。
Jupyter Notebook をよく知らない人でも Python が分かるなら大丈夫です。本サイトのサンプルコードにある Python を試しに実行してみたい時などにも使えます。
おすすめ書籍
アルゴリズム・データ構造
プログラミングコンテスト攻略のためのアルゴリズムとデータ構造
競技プログラミングをする人たちにとっては「螺旋本」として有名な本です。
はじめてアルゴリズムやデータ構造を学ぶならこの本がおすすめです。前述の AOJ にある問題を解説しながら、アルゴリズムやデータ構造を基礎から説明しています。
主に C や C++ を用いて実装されています。
プログラミングコンテストチャレンジブック
競技プログラミングをする人たちにとっては「蟻本」として有名な本です。アルゴリズムやデータ構造を学び始めたばかりの人は難しく感じるかもしれませんが、必要な要素が問題例と共に体系的にまとまっています。
主に C や C++ を用いて実装されています。
アルゴリズムイントロダクション
もっと専門的にアルゴリズムやデータ構造を学びたい方はこちらの本を参考にすると良いでしょう。コンピュータサイエンスで学習する学問としてのアルゴリズムの入門書と言えます。
かなり分量があり重いので、Kindle版や 分冊(1巻と2巻がある)にする方が良いかもしれません。
プログラムは主に擬似コードで説明されています。