はじめに
AtCoderを初めて半年、ついに茶色になることができました!
記念として書くこの記事が、これからプログラミングを始める方や、AtCoderでまずは茶色になりたいと思っている方の手助けになれば幸いです。
自己紹介
東京理科大学葛飾キャンパスに通う学部2年生です。
専攻は非情報系で、材料工学を学んでいます。
AtCoderユーザー名はnekoyukiです。
AtCoderとの出会い
大学2年生の5月頃に応用数学研究部、通称OSKに出会いました。
OSKとは、東京理科大学随一の情報系サークルで、競技プログラミングやアプリ開発等が盛んに行われています。
私はちょろい性格なので、カッコ良さそうだなーという安直な理由で入部し、そこで初めてAtCoderに出会います。そのため、AtCoderを始めるまではPython?アルゴリズム?ナンデスカ状態でした。
茶色ってどのレベル?
そもそも茶色ってどのレベルなんだよって感じだと思うので、一緒に見ていきましょう。
AtCoder公式によると、茶色は以下の見解らしいです。
Rating 400以上 (茶色)
AtCoderにおける分布(2023/11/20現在)
実レーティング分布: 上位28.462%
内部レーティング分布: 上位45.928%
期待できる能力
コーディングへの安心感がある程度持てます。学生や派遣社員などが茶色のレーティングを持っていたら、とても喜ばしいです。
基礎的なアルゴリズムへの理解があります。典型的な処理であれば、動的計画法、二分探索などのメジャーなアルゴリズムを適用することが出来ます。一方、少し典型から外れてしまうとまだ解くことが出来ません。
競技者としては、多くの参加者がまず目指すべきラインはここでしょう。数学的素養がそれなりにあり、しっかりと練習すれば到達可能な水準です。逆に言えば、才能や素養が十分にあるか、競技者としてしっかり取り組んだかのどちらかを必ず満たしているのがこの色です。
つまり、最低限のコーディング力は保証できるわけですね(嬉)
学習内容と茶色になるまでのモチベ
やっと本題の話に入ります。
まずはAPG4bPythonでPythonの文法について学習しました。
これはPythonで競技プログラミングを始める人のための入門教材です。
私が学習してた6月頃は1章のみでしたが、つい最近2章まで追加されたっぽいですね。
この教材で文法を身につけて、初陣ABC358に参加しました。
結果は3完で、簡単に茶色になれると確信しました。このビギナーズラックが、入茶するまでに半年も要する原因となります...。
初陣後は、暇な日にコンテストに参加する程度で、だらだらとレートを伸ばして過ごしていましたがABC376でコンテスト中にパソコンが壊れます。レート-35。ここで完全にやる気を失います。しかし、ABC380で久しぶりの3完を達成し、勉強のモチベとレートがアップします。我ながら単純でバカみたいですね。
ABC380時点で知っていたアルゴリズムは二分探索、累積和くらいです(累積話は簡単なものしか実装できない)
ここで、茶色になるためにはコンスタントに3完するか超速解き2完をする必要があることに気づきます。しかし、後者は現実的ではない上にC問題が簡単だった場合意味をなさないので、アルゴリズムとデータ構造を学習してコンスタントに3完する方針に定めます。
そこで、先輩からおすすめしてもらった競技プログラミングの鉄則本を購入しました。ちまちまと進めていき、茶色になった時点ではこの本で動的計画法などのアルゴリズムを身に付けていました。
入茶するのに限っては鉄則本は要らないなと思います
また、アルゴ式でハッシュやキューなどのデータ構造を学習し、後はひたすらに過去問を解きます。なんだかんだ、過去問が一番実力向上に繋がりました。
過去問サイトはAtCoder Problemsがオススメです。
過去門で解いた問題と解いてない問題、問題の難易度、配点まで視覚的にわかりやすくまとめられたサイトです。使ってない人は見たことが無いくらいに有名。
そんなこんなで学習を続け迎えたABC387で、緑paffを出して茶色コーダーになりました。
一旦ここまでの話を整理すると、身につけたアルゴリズムとデータ構造は以下のようになります。
- 全探索
- 累積話
- 二分探索
- 動的計画法
- ハッシュ
- キュー
- その他ツールの使い方
今AtCoderを始めた頃に戻るなら
- APG4b
- 過去問のA問題、B問題をスラスラ解けるようになるまでやる
- アルゴ式でキューを学ぶ
- 過去問のC問題を解きまくる
の順番で学習していくと思います。
最後に
今後の目標は学部3年に上がるまでに入緑することです!!!!!する!!!!!してみせるぞ!!!!!!