💧

AtCoder緑から水色までの記録

2022/07/10に公開約3,200字

はじめに

2022/07/09に開催されましたAtCoder Beginner Contest 259(ABC259)で水色になることができました。
緑になったのが2021/05/30でしたので、約1年ぶりの色変化です。
色変記事として、緑から水色になるまでの軌跡を書き残しておきたいと思います。

自己紹介

情報科学の大学を出て、IT関連の業務をしています。
インフラ関連のお仕事をするときもありましたし、プログラミングもアルゴリズムというよりは
業務をモデリングする方が多いかと思っています。
競技プログラミングは、35歳の時に人からの紹介で始めました。
そのため、競技プログラミングをしながら昔学んだことを思い出したり、
いわゆる典型と呼ばれる手法でも個人的には新たに学んだということもありました。

使用言語

Go言語を使っています。
Go言語の考え自体にも共感していまして、主に趣味で勉強をしながら使っています。
AtCoderに挑むには、使用人口が多いかと思われるC++やPythonと比べて
必要なライブラリ類を自前で用意することが多く、それも勉強と思って使っています。

プログラミングを勉強しつつ、言語を忘れないように使い続けているような感じです。
以前テレ東BIZチャンネルで、高橋直大(chokudai)さんが話していた

「何か」というのが漠然としたままプログラミンを学習しようとしても
入門書を読むだけで終わってしまう
AtCoderはそこに目的を与えるという意味がある

という言葉を自分なりに実感しています。作りたいものが特になくても、
競技プログラミングの問題を通して、言語に触れて身に付けることに繋がっていると感じています。

1年の精進

緑から水色になるまでのレーティングの変化がこちらです。

AtCoder Performancesさんのパフォーマンスグラフがこちら。

2021/06〜2021/09

AtCoder ProblemsのHeatmapを見ても、同時期くらいにほぼ毎日最大で水Diffの問題を解くことを続けていました。

この頃はABCの問題数が6問から8問に変わる前後の時期でした。
パフォーマンスは、緑Diffをコンテスト中に通していることもあれば、
早解きで水パフォーマンスが出ているだけでした。
例えば、ABC205はD問題が茶Diff、E問題が黄Diffという難易度の崖があり、
早解きで青や水パフォーマンスが出た会だったかと思います。
この頃に、800〜1000くらいまで伸ばしていけました。

2021/10〜2021/12

ABCが8問になり、難易度の崖付近で早解きをするより相応の難易度の問題を解いて
パフォーマンスを出すことがより求められるのを感じています。

この頃からパフォーマンスは900くらいに収束しました。加えて2連続くらいレートが急激に冷えて
前の3ヶ月にあげたレートが一気に下がって停滞を感じていました。
競技プログラミング以外のことでも忙しいことが重なり、それに伴って精進の習慣が乱れ、
レートの停滞が合わさって凹んでいた時期でした。いわゆるスランプ期です。

ただ、冬休みにはAtCoder Problemsで開催されていました何時間にたくさんの問題を解く
バーチャルコンテスト(聖夜のバチャや108問解く除夜のバチャ)に参加していました。
これは灰〜緑Diffの中でもまだ未挑戦の問題がありましたので、まだまだ触れたことがないタイプのものの習得ができたと思います。

ヒートマップはこのような感じです。

2022/01〜2022/03

この頃には、Heatmapを毎日埋めるということをあまり意識せず、
今のレートより難易度の高い問題はじっくり考えて解く精進を増やしていました。

水、青Diffの問題で、似た過去問を連想して解くこともありましたが、
コンテスト中に初めて考察するような問題がひらめけるようになるように切り替えたということです。
アナログですが紙に考察を書いてみたり、いきなり解答ではなく考察用のコードを書いたり、
Time Limit Exceeded(TLE)になるであろう愚直なコードを書いてそこから改善をしたりなどしました。
また、愚直なコードは限られた制約の中で解答コードの自動テストに流用したりもしていました。

新年からのコンテストでは緑上位〜水Diffの問題を解いてパフォーマンスを出せるようになり、
再びレートが上昇傾向になりました。

2022/04〜2022/06

この頃AtCoder Problemsで、ABC向け未ACの問題が少なくなってきましたこともあり、
yukicoderなど他の競技プログラミングの問題を解くことにも手を出してきました。

レートの上昇も継続することができ、この調子でいけば水色に入れるだろうというのも見えてきました。
とはいえ、レート1150前後を1ヶ月くらい彷徨っていましたこともあり、もしかしたら緑ギリギリで
停滞してしまうというのも恐れは毎回のコンテストで感じていました。

AtCoderに関する問題の精進

入緑した頃のAcceptedは600くらいでしたが、こちら執筆している現在は1654になりました。
AtCoder Problems Language OwnersのGo言語のベスト10に入っているくらい問題数を解いていました。
緑から水にかけて、約1000問以上精進していました。他サイトの問題もやっていましたので
もう少し問題は解いているかと思います。

その他、ABCのA〜E、灰〜水Diffはそれなりの割合を解きました。

今後について

しばらく水-緑を反復することも考えられますので、水色維持を目標に精進を続けようと思います。
青を目指そうとすると、1年以上の見込みが考えられますし、思考についての精進が必要かもしれません。
また、Goはコードを書く量が比較的多いかと思いますので、思考力で早く解答を導き出すか、
ライブラリ、ツールの見直しなども必要になってくるかもしれません。

Discussion

ログインするとコメントできます