コンテンツにスキップ

競プロ班の紹介

1. 競プロって何?

競プロとは競技プログラミングの略で、プログラミングの問題を解く速さ、正確性を競う競技のことです。問題の種類は様々で、数学チックな問題もあればゴリゴリのプログラミングもあります。

例えば、以下のような問題が出ます。

\(0\) 以上 \(1\) 以下の整数 \(x\) が与えられます。\(x\)\(0\) なら \(1\) を、\(1\) なら \(0\) を出力してください。

(AtCoder Beginner Contest 178 - A より)

この問題は競プロの問題ではかなり簡単な部類ですが、色々な解法があって面白いです。

具体的には、

  • プログラミング言語には条件分岐というものがあり、\(x\) の値によって場合分けしたコードが書けるので、問題文中の処理をそのままコードに移す。
  • \(1-x\) を出力する。

などがあります。

どちらの解法でもこの問題を解くことができますが、後者の方が書くコードの量が少なくてお得です。このように、工夫によって楽なコードを書くスキルを身につけられるのも競プロの面白さと言えるでしょう。

この問題だけだと物足りない人向けに、何問か他の問題を置いておきます。興味がある人は考えてみてください!

  • Odd vs Even
    • プログラム上で素因数分解をすることはできないと考えてください。どんな時に \(N\) の奇数の約数が偶数の約数よりも多くなるかを考えてみましょう。
  • 01 Matrix
    • どのように数字を書き込めば問題文中の条件を満たすかを考えてみましょう。
  • Domino Quality
    • 小さめの \(N\) について、実際に置き方を求めてみましょう。どちらがより大きい \(N\) について解けるか、友達と勝負しても面白いかもしれません。

2. 競プロの良いところ

プログラミング初心者に優しい!

競プロは、初心者に優しいです。

一般的なプログラミングだと、何かを作ったりするまでに膨大な知識を覚える必要があります。しかし競プロの場合、知識が無くても頭を捻れば解ける・楽しめる問題も多いのです。前章の最後で挙げた \(3\) 問は、まさにそういった問題です。

始めのうちはプログラミングに慣れていなくても、自分の身の丈にあった問題を解き進めることで楽しくプログラミング力を高められる、それが競プロの良いところです。

やっていて楽しい!

やっぱりこれに尽きます。僕は一年半くらい競プロをやっていますが、未だに飽きません。

というのも、競プロには色々な要素があるからです。算数/数学要素、パズル要素、プログラミング要素、競争要素、、、挙げだすとキリがありません。そのため人によって、また気分によって自由自在に楽しみ方を変えられるのです。

やってみると分かります。(経験者談)

3. 競プロの悪いところ

知識が偏る

よく言われることとして、競プロで上を目指すために必要な知識と実務で必要な知識は違います。競プロをたくさんやったからと言って Web サイトは作れるようになりませんし、ゲーム開発が出来るようにもなりません。

そのため、他に作りたいこと・やりたいことがある人にとっては遠回りになってしまうでしょう。そういった人たちは、最初からその分野の勉強をした方が良いと思います。

とはいえ競プロによって基礎的なプログラミング力が培われるのは確かなので、特にやりたいことはないけどプログラミングをやってみたい!みたいな人には競プロはおすすめです。

4. おわりに

ここまでを読んで競プロに興味が湧いた人は、是非競プロ班(とパ研)に入りましょう!

技術室奥でお待ちしております。

文責: 西脇響喜


最終更新日: 2021年4月28日