大学院生活と競技プログラミング
今回は前回の記事(NAISTを修了したのでNAIST体験記を書いた - 平凡な元高専生の雑記帳)にも触れていた大学院に入学してから始めた競技プログラミング(主にAtcoder)について書きたいと思います.
競技プログラミングについては以前から認識していたがわざわざ始めようと思いませんでした.
その理由としては,
筆者自身が面倒くさがりでわざわざ始めようと思わなかった
プログラミング自体は研究や趣味で使う分には無難に書ける気がするし,別に良いやとどこかで思っていた(高専生だったので...)
この2点が挙げられます.
大学院に入学して,研究室に配属され席に座ると横の席には超強競プロ勢のかがさん(@kagasantwi)がおりました.
今日プロしなさーい(今日から競技プログラミングしなさいの意味)
やりますやります(なんやこれ超めんどくさそう)
当時は,プログラミングの問題を解けるようになるために精進をするという過程があんまり理解できなかった.
そんなこんなで最初の数回コンテストに出て灰色止まりになっている内に研究・授業・就活のトリプルパンチで急激に忙しくなって2018年中は競技プログラミンングを辞めてしまった.また,今と比較するとコンテストの開催頻度が少なかったのも辞めてしまった原因の一つかもしれません(知らんけど).
しかし,2019年に入って1月で就活が終わってしまい,研究テーマ自体も計測機材の不調等からフワッと消えてしまったこともあり急に暇になりました.もちろんミーティングは週1であるので新しく研究テーマを決めて研究自体は進める必要がありましたが...言葉で言い表せないような不毛な時期を過ごして居たと思います(ヒゲも伸び放題で不毛感が体現されていました).
達成感が得られないと誰しも心が荒んでしまうと思います.そんな中で同じく就活を終えていた超強競プロ勢のかがさん(@kagasantwi)が隣におりました.
今日プロしなさーい(今日から競技プログラミングしなさいの意味)
botか?(楽しそうやしもう一度やるか)
再開するとレートが伸び始め茶色に到達しました.
参加すればするほどレートが上がるので謎の達成感が得られ楽しい気分を味わいました(灰~茶なので出るだけでレート上がるのは当然らしい?).
ここら辺では,まだ精進しようという気が一切ありませんでした.
研究で荒んだ心が癒されるのじゃ(ガハハ)
......
調子に乗っていると遂にレートの大暴落が起こりました.酒飲みながらプログラムを書いたら1問も解けなかったのです.
この大暴落を機にまた研究も忙しくなり,競プロ中も思考がまとまらなくなりました.
ただ,この時期には研究は新しいテーマに変更になり(通算2回目の変更),研究の走り出し自体は順調だったので研究生活は上手く行っていました.
しかし,9月頃に学内での進捗報告を控え,研究室内で進捗報告をすると壮大なちゃぶ台返しに遭遇し,心が荒ました.
そんな中で自分の席の正面に超強競プロ勢のかがさん(@kagasantwi)がおりました.
極度今日プロしなさーい(今日から極度精進しなさいの意味)
なんやこれ精進楽しいやん
実際,精進をするとレートが上昇し,やっと精進の楽しさを理解しました.
極度精進継続,極度精進継続,キョキョキョキョ(口癖)
そんなこんなで9月以降は研究の進捗がフラフラし始め,どんどん競プロに傾倒し始めることになります.ここら辺から精進グラフもイカれはじめ,様々な競プロサイトの問題に手を出すようになります.Githubリポジトリもイかれた使い方をしてしまいおかしなことになっています(https://github.com/MikamiTetsuro365/Atcoder).
もちろん研究を諦めた訳ではなく,指導してくださっていた先生に「今,達成感の違いから研究より競プロが楽しいみたいなことになってるんですけど,どうしたら良いんですか」というような悩み相談をする事態に陥ってしまいます.
そんなもの凄く説得力のある言葉を投げかけたせいか,ミーティング外で研究の落とし所の話し合う機会も増え,修士論文の完成及び修士発表に漕ぎ着けることができ,思っていた以上に穏便に全てが終わり,査読ありの学会にも投稿することができました(多分思い詰め過ぎていたのかも).
また,修士発表直前にはAtcoder上で緑色になることができレートはHighestの943を記録しました(クソザコナメクジですが).修了確定した瞬間からレートが下がり始めた.
そんなこんなで超強競プロ勢のかがさん(@kagasantwi)とのやり取りです.
競プロやっといて良かったやろ?
わかりみが激しい
大学院生活で研究の片手間に競技プログラミングをしていなかったら,腐っていたんじゃなかろうかと今から振り返って思います.
また,競技プログラミングをしたおかげで,高専時代で受けた授業で軽んじてしまった「データ構造とアルゴリズム」の内容を思い出し重要性を理解すると共に競技プログラミングを通してプログラムとして書くことでより実践的な形で身につけられました(400~500点の問題も本番解けずとも時間があればまあ解けるようになりました).論理的思考力も鍛えられたんじゃないでしょうか(主観的にはわからないです...)
大学院を3月に修了し社会人になる訳ですが,レート的にはクソザコナメクジですし,競技プログラミングは楽しいと思っているのでこれからも続けていきたいと思う一方で,また何か別のことを始めたいとも思っています.
そんなこんなで,これからの競技プログラミングとの向き合い方はまだ決まっていません.
できれば,今まで解いた問題で考えたこととか理解したことを初心者視点でブログ等で配信できたら良いなとは思っているのですが...というかもう1つ色を上げるためには何か新しい努力を始めないといけないなと思っています(ポンコツなので).
蟻本をもっと読み込めば良かった