競技プログラミングについて

最近PKU, AOJなどといったオンラインジャッジシステムで問題を解いてます。いわゆる競技プログラミングというやつですね。競技プログラミングは柔軟な発想を養うので役に立つだとか、グローバル変数をガンガン使うから悪い癖が付くだとか色々言われていますが、個人的には主に次の理由でやりはじめました。

  • コーディングスピードを客観的に測る機会を作る
  • c++に触れる機会を作る
  • 英語に触れる機会を作る
  • 暇つぶし

コーディングスピードを客観的に測る機会を作る

現実の問題で、どれくらい時間をかけるべきか分からないことが多いので、自分がコードを書くのがどれほど遅いのか知る機会はなかなかありません。ところが競技プログラミングに出る問題は、答えるまでにかけられる時間はだいたい分かっています。なので、客観的に自分が遅いのか速いのか分かるようになります。速ければ、問題設定が明確な場合の開発速度には問題が無い事がわかります。もし自分がコードを書くのが遅い気がしているのだとしたら、実際にコードを書く段階には問題無いということが分かるわけです。

c++に触れる機会を作る

競技プログラミングではc++, Javaが使えることが多いです。特にc++を好んで使う人がblog等を見ると多い気がします。競技プログラミングでc++を使うと、情報も集まりやすいわけで、c++を使うのが自然なわけです。

普段は軽量言語を使っていて、ときどきc++を使う人や、たまたま求人がc++を要求する場合でも、競技プログラミングに触れていれば、そのとき必要なコードを書けるくらいにc++を思い出すのも少し楽になるかもしれません。

英語に触れる機会を作る

日本で暮らしていて、英語に触れる機会を作るのはそれほど難しいことではありませんが、何らかの形で自分の生活に組み込む必要があります。その1つの例として、競技プログラミングがあります。問題文はやさしそうな英語で、使われる単語も限られるのがまた、英語初心者にはやさしいかもしれません。

暇つぶし

なんかちょっと暇つぶししようというとき、ツイッターを開くのは有効な方法です。でもツイート数を稼ぐよりも、解いた問題数を稼ぐ方が気持ち良いかもしれません。