AtCoderで茶色になった。
AtCoderってなに
まず競技プログラミングとは。例えば以下のように問題・制約・入力が与えられるので、制限時間内に正しい解答を返すプログラムを書くというもの。 解けた問題の難易度や解答の早さを競う。
AtCoderは競技プログラミングコンテストサイトの日本最大手。オンライン・リアルタイムで毎週コンテストが開催されている。コンテストでは難易度別にいくつか問題が用意されていて、より難しい問題を解いたり、より早く正解を提出したりすると良い順位がもらえる。
コンテストの成績に応じて参加者のレーティングが変動する。だいたいのレベル感は茶色で将棋ウォーズの1級くらいとのこと。
AtCoder コンテストについての tips - Qiita
いきさつ
2021/04の中旬くらいに”競技プログラミングやってみるか”という気持ちになり、てきとうな入門書を買った。この時は言語の違いすら分からず、入門書のとおりにPythonで始めた(後に競プロではC++が主流なことを知る)。まぁ言語はポケモンでいう最初の3匹みたいなもので、べつに何を選んでもなるようになる。
入門書を読み進めるのと並行してAtCoder Beginners Selectionを解いた。なかには丸一日考えるようなものもあったが、なんとかすべてACした。ここまででだいたい10日間くらい。
04/24、コンテストに初参加。AB2完で、レートは11になった。
05/08、初めて3完する。レートが113になる。
06/13、初めて4完する。レートが328になる。
06/19、4完して入茶。レートが480になる。
というわけで茶色になったものの、直近2回は不相応の4完緑パフォでかなり上振れたという実感がある。未証明だがたまたま解法が思いついたというやつ。収束する前に実力をつけて本物になりたい。おわり。
よかったコンテンツ
競プロ全般
レッドコーダーが教える、競プロ・AtCoder上達のガイドライン【初級編:競プロを始めよう】 - Qiita
初級編、中級編を読むだけでこれから何をすればよいかがすべてわかる。
これで新しい知識を得て、下にあるProblemsで過去問を解くだけで日々の勉強が完結する。
過去問の一覧。上達するには上のQiitaとこれだけで必要十分。使い方はググると分かる。
いろいろ機能があるが、過去問の絞り込みと練習量が可視化されるのがとくにうれしい。自分は茶色になった時点でRated Point Sumが24,000だった。
おすすめの使い方はProblems → 自分のIDを入れてList → Only Trying, Difficulty to "自分の色 or 1つ上の色"に設定。Solve Probが30%以上のものを上から解いていく。
この設定だと簡単すぎるものも出てくるが、早解きの訓練として使う。時間がかかった問題については解説を読み、他の人の提出から簡潔な実装を探してまねする。
逆に丸一日考えても解けないような難しすぎる問題は、後回しにして実力がついてから再挑戦するか、解説を読んで解く(いわゆる解説AC)。どちらがよいかは競プロ界でも宗派が分かれているようだが、個人的には(とくに初心者のうちは)どんどん解説ACしていけばよいと思っている。
競プロにおける典型的・教育的な90題。星の少ないものから順に解いていって、丸一日考えても分からないものは解説+実装例を読んでACしていくのがおすすめ。茶色だと☆3~4まで解けば十分。
有志のリンク集。ユーザースクリプトが便利。初めて使う場合はスクリプトマネージャー(chromeだとTampermonkey)を入れるところからなので少しとまどうかもしれないが、ググると分かる。
Our Documentation | Python.org
公式。定義を知りたい時は原典にあたりがち。
トピック別に機能の解説や実装例が載っている。網羅的。コンテスト中なども『Python ”任意の実現したいこと”』でググってこのサイトが出てきたらまず読む。
あのアルゴリズムはどこ? Pythonを使用してAtCoderの緑色や水色を目指す方に、30以上のアルゴリズムスニペットと100問以上の問題(ACコード付き)を紹介! - Qiita
様々なアルゴリズムの実装例。もちろん自力で実装できればなおよいが、とりあえず『△△を使えば~~ができる』ということを知っておくだけでも土壇場でACが取れたりする。