この記事は競技プログラミングを始めたばかりの人に伝えたいことのカレンダー | Advent Calendar 2021の10日目の記事です。
カレンダーを見るとネタ被りをしていたのでテーマを変更しました。
競技プログラミングには色々な要素があり、初めて競プロを始めた方にとっては、どこにどういったものがあって、どういった選択肢があってというのが分かりにくいかもしれません。
明文化されてないものも含めてつらつら書いていけたらなと思います。
エコシステム?
エコシステムと呼ぶのが正しいか分からないが、競技プログラミングというジャンルの元に色々なシステムやコミュニティなどが構築されている。
日本人であれば大体AtCoderから入ると思うのだが、周りにも色々あるのでそのあたりを紹介していくことにする。
エコシステムを構成するグループを紹介して行くことにしよう。
- コンテストサイト、問題公開サイト
- やはりコンテストサイトが中心に来ますね
- 会社がコンテストをやれているというのが既にすごい
- 就活/転職サイト/検定
- 昨今はこのあたりにも触れておくべきだろう
- 年次コンテスト
- 良いグループ名が思いつかなかったが、毎年開催される有名なコンテストも多く存在する。コンテストサイトでのレーティング同様に、著名なコンテストでの上位入賞も同じくらいの誉がある
- コミュニティ
- 競技プログラミングはほぼほぼオンラインで完結するものなので、コミュニティの形成も基本はオンラインである
- どのような場所にコミュニティが存在しているかを紹介していく
- 有志による補助的な(もしくは、少し方針の違う目的の)サービス・アプリ
- 競プロという所から始まって、色々なサービスやアプリケーションが開発されている
- この辺りの活発さも珍しさの1つ
- 有志による解説ブログ・サイト
- 最近はどのコンテストサイトもとりあえず解説はあるので見過ごしてしまいがちだが、アルゴリズム自体の解説や、問題の解説を有志が行っている
- 最近は少し飽和気味かもしれないが、同じことを書いていても説明によっては分かったり分からなかったりするので、選択肢は多いことだと思っている
- 書籍
- 競技プログラミングは要求知識も多く、かつ、それを前提とした問題も多いので書籍を使ってショートカットするのも良いと思う
AtCoderの場合はほとんどがAtCoder Clansに載っているので、そこに載ってなさそうなもの(確認してないけど)やAtCoder以外の部分について書いていくことにしよう。
コンテストサイト、問題公開サイト
AtCoder以外だと、yukicoderやAOJがある。
日本語の問題が充実しすぎて、日本語の問題だけでレッドコーダーになれる気がする。
だが、世界的に見ると競技プログラミングユーザーを最も抱えているのはCodeForcesというサービスである。
はじめての Codeforces 前編 (参加登録〜コンテスト本番) - NoiminのNoise
CodeForcesに出る場合はHackという新しいシステムが追加される。
これはTopCoderという著名なコンテストサイトにも存在するシステムであり、他人のソースコードをよんで、そのソースコードに含まれる間違いを指摘するというのがざっくりとした説明。
ソースコードを書くだけでなく、読んで理解して間違いを探すという更にアドバンスドな能力が要求される。
AtCoderだと見かけないが、とても面白く勉強になるシステムなので、CodeForcesで試してみてほしい。
コンテストサイト、問題公開サイトについて有名どころを以下に並べておく。他にももろもろあるが、思いついた所を羅列しておく。
- コンテストサイト
- AtCoder:競技プログラミングコンテストを開催する国内最大のサイト
- Codeforces 世界最大
- Topcoder Top Technology Talent On-Demand 権威あるコンテストサイト。参加が難しいので入門記事を探すこと
- Competitive Programming | Participate & Learn | CodeChef インドのコンテストサイト。こっちもかなりでかい。Twitterとかで謎インドコンとか書いてあったら大体ここの謎コンテストのこと
- 問題公開サイト
- yukicoder コンテストもやっている。個人で運営しているとんでもないサイト
- AIZU ONLINE JUDGE: Programming Challenge 競技プログラミングに力を入れている(多分)会津大学がホストのサイト
就活/転職サイト/検定
採用試験でコーディングテストというのが行われたりする。
その延長線上というか、プレテストというか、そういった感覚で就活/転職サイトで使われたりする。
興味があるなら、見てみるのもいいかもしれない。
以下以外にも色々ありそうだが、正直あまり知らない
あと、アルゴリズム実技検定 | AtCoderというのもある。
有用性についてはこれからなのでどうなるかは分からないが、競技プログラミングの延長線上の検定としてはこれが初めてで、かつ、これ以上のものが今後出てくるとは思えない。
年次コンテスト
年次でコンテストを開催している所はいくつかある。
その中には歴史が古く競技プログラミング界で権威のあるコンテストも多い。
知らないと目指しようもないと思うので、羅列しておく。
開催時期もものによっては年齢制限もあるので、詳しく調べてみよう。
以下がなんか企業がやってる感じがない大会。特に上2つに権威を感じる。
- 情報オリンピック日本委員会 高校生まで参加可能。オリンピアンになれる
- ICPC 国際大学対抗プログラミングコンテスト 大学生が参加可能。この大会も歴史が長く、権威もある
- パソコン甲子園2021 高校生(以下?どうだったかな?)向けの日本の大会。こちらも有名
これからが企業がやってる権威がある大会。Tシャツももらえたりするので、気軽にチャレンジしよう。
- The ultimate designing and programming tournament | Topcoder Open TopCoder Openが一番企業コンテストだと権威がある気がする。なんとなく起源感があって神格化してるだけかもしれんけど
- Google Code Jam まとめ - tatyam’s blog Google主催のコンテスト。結構歴史ありそう
- Facebook Hacker Cup ここも昔からやってる
- あとはロシア系でなんかあったり、学会連動のものがあったりする
コミュニティ
競技プログラミングのコミュニティはインターネット上にあるのでとてもオープンである。
チラ見して楽しむも良し、積極的に参加するも良し。
- (2) AtCoder TLさん (@atcoder_tl) / Twitter Twitterで強い人や仲間を探したいときはここのリストが役に立つだろう
- AtCoder Clans このサイトにQ&AサービスやDiscordチャンネルが詳解されている
- Top - Codeforces CodeForcesには記事投稿の機能があり、色々な告知や議論がなされている。例えば、TopCoder Openの解法の議論がここでされたりもしているので、覗いてみるといい。
- TopCoderにもフォーラムがあったはず。(日本ではフォーラムって文化が廃れちゃったよね…)
有志による補助的な(もしくは、少し方針の違う目的の)サービス・アプリ
沢山あるので、紹介しきれないよね…
ここでとりあえず探せばいいと思う。
どのようなコンテストサイトにも問題埋めの補助サイト、AtCoderで言う所のAtCoder Problemsがあったりするので探してみると合致するサービスがあるかも。
コンテスト探しは、CLISTをとりあえず見ておけば大丈夫だと思う。
有志による解説ブログ・サイト
全部紹介はしきれないので、探し方を説明するに留めることにする。
大体の有志解説サイトは問題名を題名にしているので「AtCoder 問題名」とか「問題名 解説」とかでググると公式解説以外の有志の解説を見つけることができるかもしれない。
公式解説で納得できない場合は野良サイトの解説を探してみよう。
あとは、Twitterでコンテスト終了後に解法を短文でつぶやいている人もいるので、コンテスト終了時間を狙ってTwitterを巡回することでも解説をかき集めることができるだろう。
アルゴリズムが分からない場合は「アルゴリズム名 競技プログラミング」みたいに検索すると色々出てくるかも。
最近は「アルゴリズム名 AtCoder」でもいい感じに出てくるかも。
かなりたくさんあるので適当にググっても出てくると思う。
書籍
本当にたくさん本があってすごいですね…
全部読んだ訳ではないし、どの本も良いのだが、このAdvent Calendarのホストの書籍を紹介しておく。
問題解決力を鍛える!アルゴリズムとデータ構造 (KS情報科学専門書) | 大槻 兼資, 秋葉 拓哉 |本 | 通販 | Amazon
けんちょんさんが主で、秋葉さんが監修という最強の布陣で書かれている。
(今の人は知らないと思うが、秋葉さんは競技プログラミング界のレジェンドの一人)
とても網羅的に書かれており、効率的に知識を身に着けることができるだろう。
終わりに
これで終わりです。
競技プログラミングはいろんな人はいろんなことをやって楽しんでいるんだなということがよく分かりますね。
層が厚いというか、面白い界隈だなと感じます。
あと、参加層が若いという所がまた良い所ですね。
今後もどのように発展していくのか、とても楽しみにしています。