Eyes, JAPAN Blog > 競技プログラミングのすすめ

競技プログラミングのすすめ

Masato Yamamoto

この記事は1年以上前に書かれたもので、内容が古い可能性がありますのでご注意ください。

こんにちは。アルバイトの山本です。私は4ヶ月前に、大学に入学してから競技プログラミングの存在を知りました。そして、その楽しさを他の人にも味わってもらおうと、競技プログラミングとは何なのか、そして競技プログラミングを始めるにはどうすればよいのかについて書いていきたいと思います。

まず、競技プログラミングとは何なのかまったく知らない人もいらっしゃると思うので簡単に説明しておきます。競技プログラミングとは、与えられた問題を正確にそして速くプログラムを書く競技です。例えば、問題で「2つの整数の和を出力するプログラムを書きなさい」とあれば、問題の指示の通りのプログラムを書いて提出します。このように4~7問の問題で構成されていて、誰が1番多くの問題を解けるか競います。使用できる言語は大会によって違いますが、C, C++, Javaが主流です。なぜこれらの言語が主流かというと、まずライブラリが豊富というのと、処理が非常に高速だからです。上に挙げたような「2つの整数の和を出力するプログラムを書きなさい」と言うようなものだと差はありませんが、計算量が膨大なプログラムになってくるとこれらの言語はかなり有利になります。なぜなら、問題によっては制限時間が決まっているもの(1秒以内など)があり、RubyやPythonなどでは処理が遅く、間に合わないからです。(参考:俺の言語がこんなに遅いわけがない!? 〜C, Java, PHP, Python, Rubyによるプログラミング言語 速度比較〜

さっそく、競技プログラミングをしたくなったら、オンラインジャッジという便利なシステムがあります。オンラインジャッジとはプログラミングコンテストの問題が多く掲載されていて、その問題を解いて提出することで正誤判定をしくれるシステムです。以下はそのオンラインジャッジシステムの一部の有名なサイトです。最初の2つの「AIZU ONLINE JUDGE」と「AtCoder」は日本語なのでおすすめです。

競技プログラミングには自信があって、もう大会に出場したいって方は 天下一プログラマーコンテスト2014CODE FESTIVAL 2014があります。前者の予選Aは終ってしまいましたが、まだ8/23に予選Bが残っています。後者の予選Aは9/20にあります。まだ一ヶ月ほどあるので必死に今から頑張れば本戦に出場できるのではないでしょうか。私も頑張ります。

おわりに、今回「競技プログラミングのすすめ」ということで、自分の考える、競技プログラミングを行う上でのメリットを挙げます。

  • アルゴリズムを学べる
  • 問題を解決する能力向上
  • コーディングの正確さ・速さ向上
  • 楽しい!

こんなにも、楽しい競技プログラミング。あなたも始めてみませんか?

山本

Comments are closed.