みなさんは「競技プログラミング」について知っていますか。
競技プログラミング(競プロ)とは、簡単に言うと出題されたプログラミング問題を制限時間内に解いて競い合う競技のことで、プログラミングコンテスト(プロコン)と呼ばれることもあります。
競技やコンテストというと大げさに聞こえるかもしれませんが、初心者向けの練習問題を公開しているサイトなどもあり、プログラミングを勉強中の方でも気軽に挑戦できます。
プログラミングを習得するには、自分の手を動かしてコードを書くことが重要です。ただ独学で勉強をしていると、どのようなコードを書けばよいのかわからなかったり、モチベーションが保てなくなることもあるでしょう。
競技プログラミングは初心者でもゲーム感覚で楽しく挑戦できて勉強にもなるため、経験者だけでなくプログラミングを勉強中の方にもオススメです。
また、この競技プログラミングでよく使われている言語の一つにPythonがあります。
Pythonは構文がわかりやすくライブラリも充実しているため、初心者でも競技プログラミングで使いやすい言語だと言えるでしょう。
この記事では、初心者がPythonで競技プログラミングに挑戦するための練習サイトを6つご紹介します。
【目次】
- 競技プログラミングとは
- 競技プログラミングでPythonを使うメリット
- 競技プログラミングでPythonを使うデメリット
- Pythonで競技プログラミングの練習ができる・問題をたくさん解けるサイト2選
- Pythonがはじめての人にオススメの競技プログラミングサイト2選
- Python経験者にオススメの競技プログラミングサイト2選
- Pythonを使って競技プログラミングに挑戦してみよう
競技プログラミングとは
競技プログラミングとは、主催から出題された問題を制限時間以内に参加者が解いて競い合う競技です。ルールや前提条件などは、大会やサイトなどによって異なります。基本的には問題の正解数やコードの作成時間などを競い合い、制限時間は2時間程度で終わるものもあれば、1日がかりとなる場合もあります。またとにかくコードの短さを競う、コードゴルフというものもあります。
問題内容も条件分岐や繰り返しなどが理解できていれば解ける初心者向けのものから、Web開発やデータ分析、機械学習などといった専門知識が必要となるものまでさまざまです。
そのため自分にあったレベルの問題を選べば、初心者でも気軽に挑戦できてプログラミングの勉強に役立てられるでしょう。
競技プログラミングでPythonを使うメリット
すでに使い慣れた好きな言語があればそれを使うのが一番ですが、前述の通りPythonは競技プログラミングでも人気の言語です。競技プログラミングでPythonを使うと、以下のようなメリットがあります。
構文がわかりやすく書きやすい
Pythonはプログラミング言語の中でも比較的構文が短く、初心者でも直感的にわかりやすく書きやすい言語です。
競技プログラミングでは素早くコードを書いて問題を解くことが求められるため、コードが書きやすい上に短くて済むPythonは初心者にも適していると言えるでしょう。
競技プログラミングで使えるライブラリが充実している
ライブラリとは、簡単に言うと処理を実装する際に手助けをしてくれるツールです。Pythonは競技プログラミングでも使える標準ライブラリ・外部ライブラリが充実しているため、必要なコードを短く素早く書くことができます。
競技プログラミングでPythonを使うデメリット
実行速度が遅い
Pythonはインタプリタ言語です。インタプリタ言語とは、簡単に言うとコードを実行する際に一行ずつ機械語に翻訳していく言語です。対してC言語やC++などのコンパイル言語は、すべてのコードを一気に機械語に翻訳して、一気に実行します。
インタプリタ言語はコンパイル言語と比べて実行速度が遅くなってしまうため、大きな大会で上位を争うような人の多くはC++を選ぶ傾向です。
Pythonで競技プログラミングの練習ができる・問題をたくさん解けるサイト2選
paizaのスキルチェック問題
初心者オススメ度:★★★★★
paizaでは、誰でも無料で挑戦できるプログラミングスキルチェック問題を常時公開しています。
プログラミング問題を解いた結果によりS・A・B・C・D・Eの6段階で自分のスキルのランクが分かります。問題はランクごとに分かれているため、初心者から上級者の方まで挑戦していただけます。
「まずは簡単な問題から試してみたい」「とにかくPythonで練習問題をたくさん解きたい」という方にオススメです。
こんな人にオススメ!:競技プログラミングに挑戦する前に問題を解く練習がしたい・とにかく問題をたくさん解いてみたい
paizaのレベルアップ問題集
初心者オススメ度:★★★★★
レベルアップ問題集は、何度でも挑戦できる練習問題です。スキルチェック問題とは違い、解いた結果はランクに影響しません。
上位ランクレベルの問題や、ランクアップを目指すための問題などを分野別に公開しています。「スキルチェック問題が難しくて解けない」「上位ランクの問題に歯が立たなかった」という初心者の方はもちろん、「Pythonを使って競技プログラミングの練習がしたい」「このアルゴリズムが苦手だから強化したい」という方にもオススメです。
またレベルアップ問題集の問題は解答の相談・共有やコードの公開もOKのため、友達との相談や勉強会などでの活用も自由にしていただけます。
こんな人にオススメ!:苦手な分野を強化したい・友達と相談しながら問題を解きたい
Pythonがはじめての人にオススメの競技プログラミングサイト2選
AtCoder
初心者オススメ度:★★★★★
AtCoderは日本でプログラミングコンテストを開催している有名サイトです。日本で競技プログラミングをしている人ならほとんど参加経験があるため、聞いたことがある人も多いのではないでしょうか。
「有名なサイトだから経験者向けの問題ばかりで難しいのでは」と思うかもしれませんが、比較的簡単な問題が出題されることもあります。「はじめての方へ」というチュートリアルのページもあるため、「Pythonで競プロを始めたいけど、プログラミングスキルに自信はない」「初心者だから競技プログラミングなんてまだ難しそう」という方にもオススメです。
こんな人にオススメ!:参加者が多く有名なコンテストに挑戦してみたい・過去問を使って練習がしたい
yukicoder
初心者オススメ度:★★★★★
yukicoderは競技プログラミングやアルゴリズムについて、ゆるふわに練習する目的で運営されているサイトです。
競技プログラミングの模試や勉強会という位置付けのため、「最初からコンテストに挑戦するのはハードルが高い」「気軽にPythonで問題を解く練習から試してみたい」という初心者の方や、「アルゴリズムの知識を強化したい」という方にもオススメです。
また問題投稿をして参加者に解いてもらうこともできるため、プログラミング問題の作成に興味がある人にも最適です。
こんな人にオススメ!:ゆるく競技プログラミングに挑戦してみたい・アルゴリズムの勉強がしたい・問題を作成してみたい
Python経験者にオススメの競技プログラミングサイト2選
TopCoder
初心者オススメ度:★★★☆☆
TopCoderは世界中で約60万人の人々が参加している、世界最大規模の競技プログラミングコンテストです。
TopCoderのコンテストに参加すると、プログラミングスキルを表すレーティングと呼ばれる数値が付けられます。一定以上の高いレーティングを持ち、名前が赤で表示されている人物は「レッドコーダー」と呼ばれ、世界中のエンジニアたちの中でも一目置かれる存在となります。
初心者でも英語がOKな方なら挑戦可能かと思いますが、「多少のプログラミング経験はあるので、難しい問題をPythonで解く練習がしたい」といった方にはよりオススメです。
こんな人にオススメ!:英語OK・世界的なコンテストに挑戦してみたい
Codeforces
初心者オススメ度:★★★☆☆
Codeforcesも世界的に有名な競技プログラミングサイトです。ロシアのサイトですが、英語で参加できます。
週に2、3回と頻繁にコンテストが実施されているため、英語OKな初心者の方やPythonを使ってたくさん競プロに挑戦してみたい方にオススメです。
こんな人にオススメ!:英語OK・頻繁にコンテストに挑戦してみたい
Pythonを使って競技プログラミングに挑戦してみよう
競技プログラミングには、限られた時間の中でいかに効率のよいコードを素早く書くかを追求しながら、リアルタイムで日本中・世界中の人々と対戦できる楽しさがあります。またPythonは競技プログラミングだけでなく、実務でも人気があり需要の高い言語です。習得できれば、エンジニアとして就職・転職できる可能性も高まるでしょう。
なおPythonの学習から始めたいという方には、こちらの記事もオススメです。
「paizaラーニング」では、未経験者でもブラウザさえあれば、今すぐプログラミングの基礎が動画で学べるレッスンを多数公開しております。
詳しくはこちら