最近、競技プログラミングをはじめた。一番手に馴染んでいるRubyでもよかったんだけど、界隈のスタンダードであるC++を使うことにした。AtCoderで毎週日曜日に開催されているABCという初心者(?)向けコンテンストに出て少しずつレートがつきはじめて楽しくなってきた。
やろうと思ったきっかけとしては、にわかに「コンピュータサイエンスは必要か否か」うんぬんといった話をよく見るようになって、僕は文系卒でまったくコンピュータサイエンスというものを系統的にやったことがなかったから、どんなものなのか興味が出てきたのだった。コンピュータサイエンスを学ぶのって成果物を作ることをゴールにしにくそうだったので、競技プログラミングみたいな分かりやすく順位がつくようなものをやってみることにした。
C++もまったく書いたことがなかったので、入門書を読んでみたり、AtCoderにあるC++初心者向けのコンテンツをやってみたり、ABCの過去問を解いていくなかで、コンテストに出るのには不自由しない程度には書けるようになった。
ただ、どういう問題でどのデータ構造やアルゴリズムを選ぶといいのか、まだ判断がつかないので、データ構造やアルゴリズムの勉強もするようになった。とりあえずググったらいろんなところでオススメされていた「プログラミングコンテスト攻略のためのアルゴリズムとデータ構造」、通称「螺旋本」をやっている。
とりあえず、AtCoderで緑色になるくらいまではがんばってみたい。