プログラミング未経験からAtCoder茶色になるまで

ABC154で、兼ねてより目標にしていたAtCoder茶色になることが出来た。

普段は週6で働いているのでまとまった勉強時間を取りにくく、なおかつ情報系や数学系の出身でもないので、色がつくまでに時間がかかってしまった。

成績を見て頂ければ一目瞭然なのだが、いきなり高パフォーマンスを連発する秀才でも無ければ、成績の伸びが抜群に良いわけでもない。

少しずつ、愚直に積み上げてきた結果である。

それだけに、茶色になった時はとても嬉しかった。

プログラミングは完全に独学であり、本業とは全く関係ないので、今までどういうことをしてきたのか、これからどんな勉強をしようか、備忘録を兼ねてまとめてみる。

茶色になるまで

言語はPythonを選んだ。

様々な所で競プロはC++というような意見があったため、最初の2回はC++で挑むも惨敗。

何冊か参考書を買ってみるも、C++は理解に時間がかかりそうだったため、別の言語を検討し始めた。

ちょうどその頃、機械学習やディープラーニングの分野ではPythonが注目されており、可読性が高く学習コストがC++より低いという評判を聞いて勉強をし始めていた所だった。

以下の書籍を読み、写経しながらPythonの勉強をスタート。

特に、詳解ディープラーニングはPythonの初歩だけでなく数学的な理論背景まで書いてあり、本当に読みやすかった。

写経がある程度終わり、何となくPythonの文法がわかり始めたところで、もう一度AtCoderやってみようかなと思いはじめ、まずは最初の関門である茶色を目標とした。

茶色になるためには、C問題まで解けるようになろう、とりあえずコンテストに参加しよう、という意見が多くのブログで書かれており、それに倣ってC問題までの過去問埋めとコンテストへの参加を開始。

茶色になった段階では、過去問埋めは概ね25%であった。

緑色を目指して

正直、本業と関係ないし最初は茶色になる前に飽きるかな、と思っていた。

でも実際初めてみると、ゲーム的な楽しさ、パズル的な楽しさが詰まっており、時間制限の中で問題を解く面白さはリアル脱出ゲームや謎解きに近いものを感じ、AtCoder面白いと感じ始めた。

次は緑色を目指して頑張っていく。そのための指針として、以下の記事がとても参考になった。

緑に確実に上がるにはABCのDまで解く力が必要

ABCで3完や4完というのは、多くの参加者がそこに収まるレンジだから、 早解きをすることで大きく順位を上げて、結果として大きなパフォを得ることが出来る。 が、まずはこの考え方はやめて、ふつうの速度でふつうに問題を解いて上がることを考えよう。 その方が将来性もあるし、競技プログラミングをアルゴリズムの勉強と捉えた時には より本質的でもある。
(中略)
だから、一つ上のランクの4完をとることをベースに考えた方が、よりスムーズに上がることが出来るようになる。 実際に、私が茶色から緑色に昇格した直近2回のコンテストでは4完している。

https://www.akiradeveloper.com/post/atcoder-green-howto/

冒頭に書いた通り、私は天才的頭脳でズバッと成績を上げられるタイプではない。

そのため、

  • コンテストに参加し続ける
  • C埋めを完遂する
  • 難易度の低いD埋めを開始する
  • 基本的なアルゴリズムを勉強する
  • 勉強したことをブログでアウトプットする

という、あくまでも少しずつ積み上げていくスタイルを続けようと思う。

半年以内に緑色なることを目標に勉強を続けていく。

コメント

タイトルとURLをコピーしました