現在、全国的に情報系の学生たちの間では空前の AtCoder ブームとなっていて、
「AtCoder を始めた知り合いが増えてきて、就職活動にも活用できそうだし、この機会に自分も始めてみたいけどどうしようかな」と考えている学生も増えてきているのではないでしょうか?
結論を先に言うと「なるべく早いうちから参加しましょう」となりますが、これまでに何回かコンテストに出場してみた経験からいろいろ書いていこうと思います。
AtCoder は、競技プログラミングのコンテストを Web で実施しているサービスです。
以前は競技プログラミングといえば難解でマイナーなイメージでしたが、AtCoder では難度の低い問題から段階的に用意されており、ページも見やすくカジュアルに参加できるようになっています。
初心者向けである AtCoder Beginner Contest はほぼ毎週、土曜日または日曜日の夜にオンラインで実施されています。
AtCoder の参加者のうち7割を学生が占めています。
とくにここ1年くらいの参加者の伸びが大きく、最近の AtCoder Beginner Contest では約5000人が参加しています。
しかしこのブームに乗って就職活動に役立てようと思いつつも、「実力を上げてから参加したい」と考えている人もいるのではないでしょうか?
これに対しては「なるべく早いうちから参加しましょう」が答えです。
なぜなら、コンテストへの参加回数が少ないと、実力がレートに反映されないからです。
最低でも14回以上は参加しておかないと実力よりも低いレートになる仕組みで (リセットマラソンの効果が低い)、実力証明が欲しいと思ったときに急に参加しても実力が認定されるわけではありません。
また、AtCoder におけるレートやランク (色) のレベル感を認識しておく必要があります。こちらの記事に説明が載っています。
AtCoder には日本全国・世界の強者が集まっており、水色 (1200) 以上あれば実務上カンストの上級者だろうと考えています。実社会では緑色の人に遭遇するのもなかなか難しいでしょう。
通常の学生であれば、茶色が認定されれば十分実力があると言えます。
初級者はまず AtCoder Beginner Contest に参加して、問題 A・B を解くことを目標にしましょう。
問題 C までは分岐、ループ、データ集計など、一般的な開発者が実務で書く程度のコードでクリアできます。
問題 D 以降は処理高速化のためのアルゴリズムの知識・経験が必要になってきます。
もし仕事でプログラミングをしているのであれば、問題 C までは正解しておきたいところです。
本番のコンテストに参加する前に、過去問を練習しておきましょう。
問題文や解答の体裁に慣れていないと本番で無駄な時間を使ってしまいます (標準入出力など)。
コンテスト中もコンテスト外のときもサイトの使い方はまったく同じなので、過去問で本番同様の練習ができます。
過去のコンテストの問題は全て公開されています。他の参加者のコードを読んで参考にするのもよいでしょう。
AtCoder Problems という有志のサイトもおすすめです。
プログラミング言語は好きなものを選んでください。
標準入出力などのよく使うコードを含めたテンプレートを用意しておくとよいでしょう。例えば C# ではこんな感じです。
https://gist.github.com/sakapon/a88697da54fc78f838baeadcc19b54c4
各問題にはテストケースが用意されていて、それらをすべてパスすれば正解 (Accepted) となります。
こんな感じで、エディターからコピー&ペーストで提出できます。
というわけでまずは2~3か月、毎週参加し続けるのです(沼