この記事はアピリッツの技術ブログ「DoRuby」から移行した記事です。情報が古い可能性がありますのでご注意ください。
この記事は、競技プログラミングとは何か、その始め方について書いた記事です。
はじめに
こんにちは、最近めっきり寒くなってまいりました。
朝起きるのが辛くなってきたmotsukaです
今回は競技プログラミングについてお話しします。
競技プログラミングとは?
競技プログラミングとは、制限時間内に与えられた問題をプログラミングを使ってどれだけ早く正確に問いて競う競技です。俗にプログラミングコンテストとも言い、
出題者側はテストデータを配り、参加者はそのテストデータを読み込ませて
作ったプログラムからの実行結果とテストデータの実行結果が同じなら、そのソースコードを出題者に提出します。出題者が回答が正しいかどうかを判定し順位を決定します。
どんな問題があるの?
問題としては、簡単なものから数学的な知識を問うものまで幅広くあります。
例えば、「3の倍数の時はfizz、5の倍数の時はbuzz、15の倍数の時はfizzBuzzを出力してください」のような、いわゆるFizzBuzz問題的なものもありますし、動的計画法や深さ優先探索などのちょっとした数学の知識やアルゴリズムの知識が必要な問題もあります。ここでは紹介しきれませんので、下記で紹介するサイトなどで実際に解いてみてください。
どんなコンテスト、サイトがあるの?
TopCoder
URL:http://www.topcoder.com
世界最大規模の競技プログラミングコンテストです。
出題される問題は英語なので、英語に自信がある方は挑戦するといいと思います。私は英語ができなくて挫折しました。
AtCoder
URL:http://atcoder.jp
日本語の競技プログラミングコンテストサイトです。
毎週土日にコンテストを行っており、また初心者向けのコンテストや上級者向けのコンテストもやっているので初心者の方にもオススメのコンテストサイトです。週末のコンテストに参加すると、毎回解いた数に応じてレーティングが更新されます。
まとめ
これを機に、プログラミングコンテストに出場してみて、プログラミングを学ぶ一助になれば幸いです。
実力がついてきたと思えて来たら様々なオンラインコンテストを開いているサイトで様々な問題を解いてみてください