atcoder茶色にすらなれなかった人が茶色になるまでのお話

まず初めにこのタイトルを見て、なんでや!茶色ぐらいになら誰でもなれるでしょ!と思った方もいるでしょう。
しかし、なれなかった時があった。そんな人のお話。

プログラミング、そして競プロを始めたきっかけ

昔からパソコンが好きではあったのですが、動画とかしか見ていなかったため、もっとパソコンで色々な事ができるようになりたい!ということでC言語を勉強しました。
その内容は汎用的で十分使う価値があると思っていましたが、パソコンの知識がほぼ無く、アプリケーションってどう作るんだといった感じでした。
そしてプログラマーの転職サイトやなんやかんや見ているうちに偶然atcoderさんのサイトを見つけて、競プロの世界を知ります。
また、よく使われている言語がC++ということで改めて覚えました。

競プロへの参加(一年前)

そして準備も整い、ABC063に参加して問題を解きました。最初にしてはそこそこ解けて、結果は2完でした。
楽しかったので意気込んで次のABC064に参加。ここで3完を叩き出します。 次のABC065では2完。まずまずの手応え。
・・・ここまでは良かったのですが、ABC066、まさかの一完。

この回のB問題は文字列。C言語から入ってしまったがゆえにstring型をあまり練習していなかったため、substrなどのSTLの使い方に混乱してしまったのです。
その時もtwitterでアカウントを作っていたのですが、周りの競プロをしている人はみな強い人が多く、自分にセンスはないのではと思ってしまいました。
その時少しだけ過去問を解いて対策をしたつもりだったのもいけないのでしょう。リアルも少し忙しくなり、しばらく競プロから離れました。

自分の欠点との向き合い、性格の変化

少しリアルの方で色々大きな変化が起きました。深くは書けませんが、自分はその当時、努力をあまり好んではいませんでした。成果が出ない時が悔しかった。ならしない方がいいのではと。
しかしそれは真逆で、努力したら何でも成果が出るということに気づいてから色々状況が変わりました。

悪い努力をすると悪いものができるし、良い努力をすると良いものができると。
結局は自分の行動次第なんだと。

ただそれだけの事でしたが、現実でそれを知った時は本当に体に電撃が走ったようでした。 ついでに性格そのものが少し前向きになりました。

プログラミング、競プロへの復帰

じゃあ先ほどの考えは正しいのか実際に試してみようじゃないかと、プログラマーになるため少し頑張ってみようかと思い、アルゴリズムを覚えるついでに競プロへの復帰もしました。そして前回の反省点を徹底的に考えました。

1、勉強量の不足(レートと解いた問題の量がほぼ一致していることを知った)
2、センスが必要だと考えてしまった(元々赤ちゃんは日本語喋れないじゃないか、でも喋れるようになる)
3、自力で考えすぎない(悩むのは楽しいが悩み過ぎるとただ疲れるだけで前に進まない)
4、他人と大きく比較せず、自分のできること、または解ける問題を増やす。目標は一つだけ先に。

4については、まだ競プロ初心者なので、自分が出来るようになったことは他の人にとっては簡単な事なので結構恥ずかしいです。それでも出来ることが増えるのは嬉しい。そういう時ぐらいプライドなんてどっかいっちゃえ精神を持つことに。
というわけで随分精神的なものが安定しました。いえい。

まさかの再び1完

そしてABC093から無事競プロに戻り、コンテストに出たり、atcoder problemsにめちゃくちゃお世話になりながら、A問題、B問題を埋め終わります。それなりに早くB問題が解けるようになり、手応えを感じ始めていました。その矢先、

ABC098。1完爆死。

えええ何だこのB問題、全探索のコードすらまとまらない。そして終了後atcoder problemsに表示されるB問題97/98。
さすがに????ってなりました。でも色々過去の1完のことを思い出しているうちに、苦手な文字列だったことと、実は全探索のコードを書く練習はさっぱりしてないことに気づきます。
そして実際はC問題にもかなり時間を割いていたため、単なる実力不足と落ち着くことが出来ました。メンタル安定大事。

そんなこんなで実力が少しずつついていき、結果としてAGCの1完を無事こなせて茶色になれました。過程色々書いたけど結果が出るときは一瞬じゃい!

↓レートと精進量(ACのモチベにでもどうぞ)

(そして皆ふぁぼ飛ばしてくれて優しい!いい記事書けるようになったら恩返しする!)

現在は自分自身の伸びしろを感じていて精進中です。動的計画法なんかは以前は知りもしませんでしたが、現在は簡単ものは書けるようになりました。典型アルゴリズムはたくさんあるので一つ一つ習得するまでは頑張ると決めています。

次の目標は300点問題をもっと解けるようになりたいことと、AC数を増やすことでしょうか。頑張ります。