ABC154で、兼ねてより目標にしていたAtCoder茶色になることが出来た。
普段は週6で働いているのでまとまった勉強時間を取りにくく、なおかつ情報系や数学系の出身でもないので、色がつくまでに時間がかかってしまった。
成績を見て頂ければ一目瞭然なのだが、いきなり高パフォーマンスを連発する秀才でも無ければ、成績の伸びが抜群に良いわけでもない。
少しずつ、愚直に積み上げてきた結果である。
それだけに、茶色になった時はとても嬉しかった。
プログラミングは完全に独学であり、本業とは全く関係ないので、今までどういうことをしてきたのか、これからどんな勉強をしようか、備忘録を兼ねてまとめてみる。
茶色になるまで
言語はPythonを選んだ。
様々な所で競プロはC++というような意見があったため、最初の2回はC++で挑むも惨敗。
何冊か参考書を買ってみるも、C++は理解に時間がかかりそうだったため、別の言語を検討し始めた。
ちょうどその頃、機械学習やディープラーニングの分野ではPythonが注目されており、可読性が高く学習コストがC++より低いという評判を聞いて勉強をし始めていた所だった。
以下の書籍を読み、写経しながらPythonの勉強をスタート。
特に、詳解ディープラーニングはPythonの初歩だけでなく数学的な理論背景まで書いてあり、本当に読みやすかった。
写経がある程度終わり、何となくPythonの文法がわかり始めたところで、もう一度AtCoderやってみようかなと思いはじめ、まずは最初の関門である茶色を目標とした。
茶色になるためには、C問題まで解けるようになろう、とりあえずコンテストに参加しよう、という意見が多くのブログで書かれており、それに倣ってC問題までの過去問埋めとコンテストへの参加を開始。
茶色になった段階では、過去問埋めは概ね25%であった。
緑色を目指して
正直、本業と関係ないし最初は茶色になる前に飽きるかな、と思っていた。
でも実際初めてみると、ゲーム的な楽しさ、パズル的な楽しさが詰まっており、時間制限の中で問題を解く面白さはリアル脱出ゲームや謎解きに近いものを感じ、AtCoder面白いと感じ始めた。
次は緑色を目指して頑張っていく。そのための指針として、以下の記事がとても参考になった。
緑に確実に上がるにはABCのDまで解く力が必要
https://www.akiradeveloper.com/post/atcoder-green-howto/
ABCで3完や4完というのは、多くの参加者がそこに収まるレンジだから、 早解きをすることで大きく順位を上げて、結果として大きなパフォを得ることが出来る。 が、まずはこの考え方はやめて、ふつうの速度でふつうに問題を解いて上がることを考えよう。 その方が将来性もあるし、競技プログラミングをアルゴリズムの勉強と捉えた時には より本質的でもある。
(中略)
だから、一つ上のランクの4完をとることをベースに考えた方が、よりスムーズに上がることが出来るようになる。 実際に、私が茶色から緑色に昇格した直近2回のコンテストでは4完している。
冒頭に書いた通り、私は天才的頭脳でズバッと成績を上げられるタイプではない。
そのため、
- コンテストに参加し続ける
- C埋めを完遂する
- 難易度の低いD埋めを開始する
- 基本的なアルゴリズムを勉強する
- 勉強したことをブログでアウトプットする
という、あくまでも少しずつ積み上げていくスタイルを続けようと思う。
半年以内に緑色なることを目標に勉強を続けていく。
コメント