【Atcoder】非情報系が2ヶ月で茶色コーダーになるまでにやったこと
はじめに
この記事はこれから茶色を目指す方に向けて書かれています。
少しでも気づきがあったり、競プロ熱が刺激できたら嬉しいです。
自己紹介・なぜAtcoderを始めたのか
AI領域での起業を志し4月から休学している大学院2年生です。
専攻は化学系で、研究でもPCを触るのは簡単なデータ集計とスライド作成くらいで、ほとんどコードに触れたことはありませんでした。
AI領域に興味があるため、深層学習の学習・実務への応用を学ぶのはもちろんなのですが、コンピュータを介した技術のスピードがえげつない現代では、最先端の情報にアンテナを立てて学び続けることと、基礎に戻って根本を理解しておく両輪が大切だと考えています。
そこで、根本の理解としてアルゴリズムはコンピュータの世界に限らず、課題解決の一般論として学ぶ価値があると思いAtcoderを始め増田。
日々の中で、これは基礎理解ためにやってるなと思っていることは以下の対応があります。もちろん実務で学べることも非常に多いですし、なるべく早く実務環境に身を置くことは非常に大事ですが、同時に基礎を補強していくイメージですね。
コンピュータサイエンス → CS50, 42tokyo
アルゴリズム → 競技プログラミング
機械学習 → 松尾研GCI
深層学習 → 松尾研DL基礎, ゼロから作るdeep learning
レートの推移
実は友人に誘われて、全くコードが書けないのに何回かコンテストにでたことはありました。ただ、その時は自分はコードを書かず、自分がアルゴリズムを考えて友人が書くのを横で見ているという形だったので、実質的なスタートは2月末でした。
そこから3月は42tokyoの試験に通い詰めだったため、4月から本格参戦。
実際にやったこと
毎週欠かさず参加する
皆さんが口を揃えて言われることですが、本当にこれが全てです。
いくら調子が悪くても、勉強が足りていなくても最初のうちは毎週欠かさず参加する。
いかに早く習慣化して、自分の中での参加ハードルを下げるかが勝負です。参加しない週があると気持ち悪い、くらいまで行けたら勝ちですね。
解けた問題+1問復習する
毎週参加した上で、解けなかった問題がもう一度出たら必ず正解できるように復讐することも大事です。
1時間頑張って考えたのに解けなかった!という問題は、解説を見て自分で実装すると、大きく力がつきます。悔しい!と思えるところまでコンテスト中は考え続けることも大切ですね。
【APG4b】Atcoderの日本語教材でC++の基礎を学ぶ
すでに何かの言語の経験がある人はそれで問題ないと思いますが、僕と同様初心者の人にはC++かPythonがおすすめです。
公式の解答や情報量的にこのどちらかを選んでおくと後々困らないかなと思います。
僕はc++を選択し、まず下のAtcoder公式教材を一周しました。
他の書籍や講座と違い、実際に競プロの問題を解きながら進めるので、実際にコンテストに出るときにハードルが低くなるところがおすすめポイントです。
1-3章だけでOKで、4章はサラッと目を通すくらいで十分だと思います。軽く1周したら、AtcoderProblemsなどでA問題をひたすら解きながら、わからないことあったら調べるくらいの方が学習効率は高いです。
競技プログラミングの鉄則"で入門のアルゴリズムを学ぶ
茶色に入るだけなら、上記のようにひたすらA問題、B問題の過去問を解いていくことがベストだと思います。
しかし、元々アルゴリズムの勉強をするために競プロを始めたので、一通り競プロで使用されるアルゴリズムを網羅的に学びたいという衝動に駆られました。
1ヶ月くらいかけて書籍を一周しましたが、4月の頭からずっとC問題までの3完で、この書籍のおかげでレートが爆上がりした!みたいなことはないですね。
しかし、明らかに成長は感じていて、コンテストの解説動画や問題の解説などの理解はスピード質ともに高まりました。もっと演習を積んで使いこなせるようにしていきたいと思います。
これからやりたいこと
【Atcoder Problems】A,B,C,D問題埋め
競プロに限らず、基礎がぶれていて高いレベルに辿り着ける人はいません。当然のことを当然に実装できる基礎力をつけていきます。
また、Atcoderは100分と限られた時間の中での実装勝負なので、早く実装できること、迷いなく実装できることは直接レートに響いてくるのはもちろん、思考体力の温存にもなります。頭は実装よりも手前のアルゴリズムの選定などの不可価値が高い領域に使いたいものです。
ただ、単調な基礎問ばかりだと刺激が少なくなり、飽きてしまう可能性が高いので、日々の演習のスタートの勢いづけとして解いていこうと思います。
分野別 初中級者が解くべき過去問精選 100 問
水色コーダーを目指す人向けに、レッドコーダーである米田さんがまとめてくださっている良問集。
分野ごとに問題が分かれており、散発的に多くの問題に手を伸ばすよりも、この100問を何度も解くことの方が近道の可能性も高いのではないか。
https://qiita.com/e869120/items/eb50fdaece12be418faa#2-3-分野別初中級者が解くべき過去問精選-100-問
まとめ
このまま毎回のコンテストでレートを50ずつ上げることができれば、あと8回(約2ヶ月)で緑に上がれる。
7月中の入緑を目指して、日々積み上げていきたい。そしてまたこの投稿のように入緑の記事を書きたい。
毎回のパフォーマンス的にこのまま推移すれば緑は達成できそうなので、緑の上である水色を目指して精進を続けます。目指せ今年中に青色。
読んでいただきありがとうございます! ハートをポチっとしていただけると執筆の励みになります✌️