皆さん競プロ(競技プログラミング)というものをご存じでしょうか?
小学校でのプログラミング教育の必修化など社会全体でプログラミング需要が高まり、競プロという言葉も少しずつですがメディアでも使われ始めました。競技プログラミングという名前から、プログラミング未経験だし大変そうだから自分には関係のない話だとブラウザバックしないでください!
どんどんと身近な存在へとなっていくであろう競技プログラミングについて簡単にではありますが紹介していきたいと思います。
それではいってみましょう!
※自分自身の競プロ歴は1年もないので何かおかしなことが書いてあったらコメントで教えていただけると幸いです……
そもそも競プロは何をするものなのでしょうか?まぁその名の通りプログラミング技術を競うものなんですが……もう少し詳しい情報が欲しいので取り敢えずこういうときは定義を見てみましょう。
競技プログラミング
プログラミングコンテストで行われる競技の一種である。参加者全員に同一の課題が出題され、より早く与えられた要求を満足するプログラムを正確に記述することを競う。
参考:「競技プログラミング」(2020年10月25日 (日) 07:40)『ウィキペディア日本語版』。
ソースコードを素早く正確に書く技術はもちろんのこと課題達成までの思考プロセスやアルゴリズムの知識等様々な要素が競技プログラミングでは求められます。そのほかにもプログラムの実行時間(コンピュータがプログラムを処理する時間)に制限が設けられているので、できる限り処理が軽くなるようにコードを書く能力も必要になります。そうやって言うととても難しそうに感じますが、競プロと一口に言っても様々な競技がありますので自分のレベルにあったコンテストに参加すれば楽しみつつ様々なスキルを身につけることができます。
一番オーソドックスなアルゴリズムに関するコンテストでは複数の問題が出題され、その解答数と解くスピードによって順位がつき、だいたい2時間ほど終わります。対してマラソン系と呼ばれるコンテストでは、与えられた最適解のない課題に対してできるだけ理想の値になるようプログラムを作っていきます。これは短くても10時間程度長いと数週間かかることもあります。
競プロをやることのメリットを大きく2つ挙げてみます。もちろん競プロの魅力はこれだけではないのですがぱっと思いついたことだけ示しています。
基本的に「問題を解く→解答を見る」という流れなので自然にプログラミング力を身につけることができます。ここでのプログラミング力とは思った通りにソースコードを書く能力だけでなく、与えられた課題に対してどのようなことを考えればよいか判断する課題解決能力、課題解決のために使うアルゴリズムに関する広い知識のことを指します。
また、大会側が出す解答以外にもほかの参加者のコードを見ることができるので同じ課題からでも様々なことを学ぶことができます!
競プロは教育者以外にも企業からも非常に注目されています。エンジニアとしての力がすべて競プロで手に入るわけではないですが、競プロである程度成績を収めている人は企業からは優秀な人材とみなされることが多いです。
また企業が競プロのコンテストを行っていることもあり、順位が高ければ主催企業から就職の推薦をもらえるといったことも少なくありません。
実際に競プロを定期的に行っている有名なサイトをいくつか紹介してみます。
日本国内最大手の競プロサイトです。初心者用のビギナーコンテストをはじめ様々なレベル帯のコンテストを定期的に行っています。非公式ではありますがAtCoder Problemsというサイトには今まで行ってきた大会の過去問がすべてあるのでそこで勉強するのもよきです!
Googleが主催するコンテストで毎年行われています。2019年のコンテストでは35,500 人も参加し、開催時は非常に盛り上がります。また賞金も用意されており優勝者は$15,000をゲットすることができます!(欲しい……)
競プロがどんなものか少しでもわかっていただけたでしょうか?いろいろとメリットなど述べてきましたがなにより競プロはやっていてとても楽しいです!!!ゲームのAIを作るような課題をやってことがあるのですが、楽しすぎて徹夜してしまったことも……皆さんにも競プロの良さが少しでも伝わっていたらうれしいです。
ここまで読んでいただきありがとうございました!
Leave a Comment