chokudaiのブログ

chokudai(高橋直大)のブログです

AtCoderでの勉強の仕方(コンテスト編)

AtCoder (アットコーダー)

毎週アルゴリズム系のプログラミングコンテストを開催しているAtCoderですが、それを使って、どのように勉強すれば良いのか?というのは、結構困っている人がいるようです。

そこで、社長お勧めの、誰でも簡単に続けられる勉強方法を伝授します。

 

 

1、コンテストに参加する

とりあえず、AtCoderで勉強をしたいなら、過去問を解くより、リアルタイムのコンテストに参加することがお勧めです。

自分ではなかなか勉強する気が起こらない・・・。という人でも、時間が決まったコンテストであれば参加できる、という人は多くいるようです。

たまに開催出来ないことがありますが、毎週土曜日、午後9時から10時半、または11時まで、コンテストが開催されています。

ある程度コンテストに慣れた人向けのAtCoder Regular Contestと、初心者~中級者向けのAtCoder Beginner Contestがあります。

まずは、これらのコンテストに参加してみましょう!

 

ちなみに、参加前に、Practice Contestで、1問だけ問題の形式を勉強しておくと良いと思います。

Welcome to practice contest - practice contest | AtCoder

これさえ正しく提出できるようになれば、ルール的には問題ありません!

 

2、コンテストで問題を解く

問題を順番に開いて、問題を解いていきましょう!

問題は徐々に難しくなっているため、Beginner Contestでも、全ての問題を解くことは困難です。出来るところまで頑張ってみましょう!

もし、長時間考えてダメだったら、コンテスト時間が残っていても、諦めてしまっても良いと思います。20分くらいまでは考えて欲しいですが、あまり解けずに憂鬱になっても仕方ないので、そのあたりはお好みでどうぞ。

 

3、解説を見る、聞く

もしあなたが全部解けたなら、今回のコンテストであなたが学ぶことはあまり多くありません。コンテスト中に得られた経験が、あなたの実力アップに繋がります。

ですが、多くの人は、どこかの問題で詰まってしまったはずです。この、解けなかった問題を解けるようになることこそが、最大の実力アップに繋がります。

解けなかった問題を解けるようにするにはどうすれば良いか?答えは簡単、復習をすることです。

しかし、復習をする、というのは、コンテストに参加することと比べて、やる気が多くないと大変です。解けない問題をそのままにしてしまう、ということは、非常に多いです。

そこで、AtCoderでは、復習を手軽にするために、コンテスト終了5分以内に解説スライドを公開し、10分以内に約1時間の解説生放送を行っています。

これを聞くだけで、自分に足りない知識は何だったのか。どういう部分がダメだったのかが解ります。自分一人で復習をするのは難しくても、生放送を聞くだけであれば、復習をするために必要なエネルギーは大幅に低下すると思います。これだけでも、十分な復習になります。

参考までに、前回のABCの解説を載せておきます。

AtCoder Beginner Contest 012 解説

 

ちなみに、復習するべき問題ですが、自分が解こうとして解けなかった最後の1問だけで十分です。

問題は難易度順に並んでいるので、B問題が解けなかったのに、D問題が解けるようになるまで頑張る、というのは、かなり大変です。まずはB問題を確実に解けるようになってから、C問題、D問題とステップアップしていけば問題ありません。極端なことを言ってしまえば、B問題が解けなかったのであれば、B問題の解説だけを聞いて、その後解説放送を閉じてしまっても、全く問題ありません。見てもいない問題の解説だけ聞くのも、勉強にはなりますが、あまり有効ではないと思います。

 

4、(やる気があれば)解きなおす

解けなかった問題の復習ですが、最も良いのは、解けるところまでしっかりと復習することです。つまり、解けるまでコードを書きなおすのが、最も良い復習であると言えます。

出来るだけ、コンテスト終了後に、正解するまでコードを書いてみましょう。ここまですれば、コンテストの参加姿勢としては完璧です!

 

 

さて、大体の流れはこんな感じになります。コンテスト参加時間が1時間半から2時間。解説が1時間で、毎週土曜日に2時間半から3時間ほど拘束される形になります。

これくらいであれば、みなさん気軽に参加できるのではないでしょうか?

ぜひぜひ、AtCoderへの参加をお待ちしています!

 

5、大きなコンテストに参加する

これはおまけみたいなものですが、実力がついてきたら(ついてなくても)、他企業と共催しているコンテストを目標にしてみると良いと思います。

今年も、様々なコンテストがAtCoder上で開催されます。

KLab株式会社との共催、天下一プログラマーコンテスト

天下一プログラマーコンテスト2014

リクルートホールディングス株式会社との共催、Code Festival 2014

CODE FESTIVAL2014 | RECRUIT HOLDINGS -リクルートホールディングス

キャリフルとの共催、Code Formula

コンテスト一覧|キャリフル

参加者が増えてきたら、他にも開催できるかもしれません><

 

こういったコンテストでの決勝進出を目標にしてみると良いと思います。(社会人さんが決勝に進めるコンテストは今年は今のところないです・・・ごめんなさい><)

 

 

さて、こんなところでしょうか?

反応がそこそこあれば、次回は、もっとやる気がある人のために、AtCoderでの勉強の仕方(オンラインジャッジ編)を投稿する予定です。お楽しみに!