初心者から始める!競技プログラミング

この記事では、プログラミング・パソコン初心者の私が、事前に知っておいて良かった情報実際につまづいたポイントを、初心者にもわかりやすく「等身大」で説明いたします。

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

競技プログラミングとは?

競技プログラミング(以下競プロ)とは、コンピュータプログラミングの能力や技術を競い合う「プログラミングコンテスト」の一種です。

参加者全員に同一の課題が出題され、より早く与えられた要求を満足するプログラムを正確に記述することを競います。

コンテストはインターネット上の各種ウェブサイトで、週一回ほどの周期で定期的に開催されています。

有名な競プロサイト

この節では、主要・有名な競技プログラミングコンテストのサイトを紹介します。

今回は、

  1.  AtCoder(アットコーダー)
  2.  Topcoder(トップコーダー)
  3.  Codeforces(コードフォースィズ)

の、以上三種類のサイトについて簡単に説明します。

1. AtCoder

AtCoderはAtCoder株式会社が提供している、日本発のプログラミングコンテストサイトです。

週一回のペースで何かしらのコンテストが開催されています。

また「AtCoder Problems」や「AtCoder Scores」といった、とても便利な外部ウェブサイトが充実しています。

加えて、C++プログラミング初心者のためのオンライン入門教材(APG4b)も存在していて、初心者でも始めやすい環境が整えられています。

外国のサイトと違い、質の高い問題が日本語で提供されるので、日本人には嬉しいですよね。

2. Topcoder

TopcoderはAppirio社が提供している、アメリカ発のプログラミングコンテストサイトです。

今回紹介している3つのサイトの中では最も長い歴史を誇ります(2001年~)。

登録するまでは簡単ですが、参加までの手順が他の大会と比べて少し面倒くさい(らしい?)です。

3. Codeforces

CodeforcesはITMO Universityに所属するMike Mirzayanovさん達が実施している、ロシア発のプログラミングコンテストサイトです。

およそ85000人ものユーザー数(2020年5月現在)を誇る、世界で最も規模の大きいコンテストサイトです。

コンテストの開催頻度が非常に高いのが一番の魅力ですね。

競プロのはじめ方

今回の記事では、競プロの「初心者にはオススメしない」はじめ方を説明します。

初心者にオススメしないはじめ方

これから紹介するポイントを押さえておけば、競技プログラミングを楽に・簡単に始めることができます。

以下の二つが、今回説明する「初心者に注意してほしいポイント」です。

1. PC上でプログラミング言語(特にC/C++)の環境構築をする

競プロを紹介しているサイトでは、まず初めにLinuxなどを用いたプログラミング言語の環境構築を勧めています。

自分の書いたプログラミングコードを手元でテストできると便利ですからね。

私は、初心者にこの方法は全くお勧めしません

私自身、UbuntuVScodeなどのアプリケーションを自分のパソコンにダウンロードし、必死に環境構築を頑張ってみました。

しかし、C言語の環境構築はできても、C++の環境構築はまったく上手くできませんでした…

このような、競プロではない「非本質的で煩雑な作業」を、パソコンの扱いに不慣れな人がやろうとすると、とても大きな負担になり、モチベーションも下がってしまいます。

幸運なことに、現在は自分のPC上で環境構築をしなくとも、AtCoderのコードテストWandboxなどの、ブラウザ上で稼働する「オンラインコンパイラ」があります。

オンラインコンパイラの例(AtCoder のコードテスト)

これを使えば、競プロは(少なくとも初級者のレベルでは)問題なく始められるでしょう。

実際に私も、現在はオンラインコンパイラで競プロを楽しんでいます。

2. はじめから高すぎる目標を持つ

競プロをはじめる理由は人それぞれ、多種多様です。

「プログラミング言語を学び、使いこなせるようになりたい人や「オンライン上で世界中の人たちと対戦してみたい」人、はたまた「ただの暇つぶしという人もいるでしょう。

しかし、ほとんどの人は「より高いレベル」、AtCoder の用語でいうとより高いレーティングを目指していると思います。

競プロ界隈では、レッドコーダーと呼ばれる、プログラミング界の「神」のような存在がいます。

最初からレッドコーダーを目指す!」という壮大な目標を立てても、そのモチベーションは永遠には続きません。

できるだけ短期的な、長くとも1年以内の目標を持つとよいでしょう。

私は1年以内に、水色コーダー(レート1200以上)到達を目指して、現在頑張っております。

(応援してくれたら嬉しいです…)

まとめ

とても気軽に始められて、どっぷりとのめり込むことができるのが競プロの良さです。

年齢や理系文系関係なしに、遊び感覚で論理的思考力を鍛えることができます。

また、最近は競プロを通した転職・就職活動も盛んで、やって損をすることはほとんどありません

この記事を読んで、少しでも競技プログラミングが気になった方は早速登録してみてくださいね!

↓下のリンクから、AtCoderの新規登録ができます。(もちろん無料です!!)

最後までご覧いただきありがとうございました。

次回の記事もお楽しみに!

参考文献

Wikipediaいろいろ (競技プログラミング、プログラミングコンテストetc.)

AtCoder – https://atcoder.jp

Topcoder – https://www.topcoder.com

Codeforces – https://codeforces.com

AtCoder コンテストについての tips – https://qiita.com/drken/items/8a6f139158cde8a61dce

C++入門 AtCoder Programming Guide for beginners (APG4b) – https://atcoder.jp/contests/apg4b