na_o_ysのブログ

プログラミングのメモ

社会人 2 年目が競技プログラミングを始めた 1 年を振り返る

この記事は Competitive Programming Advent Calendar Div2014 12 日目です。

競技プログラミングを始めて 1 年がたちました。この一年をざっと振り返ってみたいと思います。

【1 月】PrintScreen / Aizu Online Judge

新卒 SIer 1 年目だった僕は、一日 8 時間のうち 7 時間待機、1 時間でプリントスクリーンを Excel に貼り付ける業務を任され、時間を持て余していた。そこで Aizu Online Judge と出会い、ハマった。AOJ サブミット用のスクリプトを作ったりした。

小難しいデータ構造だとか理論を知らなくても、発想の転換で簡単に解けたりするのはおもしろいなーと。例えば 1028: Ideal Coin Payment and Change なんかは、ただの全数探索なんだけど発想の転換の妙を初めて感じた問題で、答えを見て震えたのを覚えている。

【2 月】僻地出張 / TopCoder

僻地に長期出張、ホテル暮らしとなり、かつ相変わらず業務の大半は待機ということで、自由に使える時間が一日 15 時間くらいある生活。ここらへんで TopCoder を始めてみる。初回の戦績としては、90 分かけてなんとか easy を解き、medium を2つ撃墜というまずまずの結果だった。

その後は参加する度にレートを下げて、灰コーダーになる。

【4 月】Web 系

業務の待機時間に飽き飽きし、転職。楽しい Web 系が始まった。自己紹介で競技プログラマーアピールした。灰色なんて言えない。毎日練習に励む。緑組に復帰。

あと AtCoder が毎週あってすごく有難かった。

【6 月】青コーダー

部署内の週次報告回で TopCoder の戦績を発表したりしていた。練習のかいあってか、ある時突然 Div.2 が簡単に感じるようになる。SRM 623 で一気にレート上げて青コーダーになった。

青コーダーになってからはグラフ理論の素振りをよくやっていた気がする。蟻本を買う。

【9 月】Rating 1499

9 戦連続 1 完でジリジリレートを上げて、あと 1 ポイントで黄色というところまできた。初戦からぴったり半年で黄色コーダーや!と思いきや、その後まさかの 2 連続 0 完で大きく下げる。

初めての幾何問題 に手も足も出ず、悔しい思いをする。

【10 月】

社内でライブ SRM とか、社外向けのエンジニアイベントで競技プログラミングについて喋ったりした。

ライブ SRM は、、、スピード感全然無いしインタラクティブじゃ無いし緊張して頭回らないしやるべきじゃないと思った。そもそもレギュレーション違反である。

【11 月】黄コーダー

撃墜回で上げることが多い気がする。correct 率 15 % の SRM 638 Easy を pass して黄コーダーになった。めっちゃはしゃいだ。

レート推移

TopCoder

f:id:na_o_s:20141212205911p:plain

Codeforces

f:id:na_o_s:20141212205754p:plain

競技プログラミングは楽しい!

他人と何かで競って、自分の立ち位置の上がったり下がったりが目に見えるのは楽しい。受験とか音ゲーに似ていると思う。

競技プログラミングの良い所は楽しいだけじゃなく実務にも活かせることだと思っていて、競プロを始めてから複雑な処理がシンプルにサクッと書けるようになったし、計算量の勘が効くようになったおかげで、システム設計の方でも注力すべきボトルネックが見えてくるようになったり、実感するところは多い。

学生時代に競プロやってなかったのが惜しいですが、これから競プロの交友関係も作っていけたらなーと思ってます。