競技プログラミング入門ストーリーとは
競技プログラミングの概要を理解し、ストーリーやレベルアップ問題集で勉強して、競技プログラミングのコンテストに挑戦するきっかけとなるストーリーです。
競技プログラミングとは
プログラミングコンテスト
プログラミングコンテストにはプログラミング作品やサービスを応募するものや、セキュリティや機械学習の問題に取り組むものなど、さまざまなジャンルがあります。競技プログラミングは、プログラミングコンテストのジャンルのうちのひとつで、主にアルゴリズムや数学的な要素を題材としたプログラミング問題を扱う競技形式のプログラミングコンテストのことです。また、コンテストそのものだけではなく、競技プログラミングと同様の出題形式の問題やそれらに取り組むこと全般を指して競技プログラミングと呼ぶこともあります。
競技プログラミング
競技プログラミングでは、プログラミングの課題が出題され、与えられた課題を解決するプログラムを短時間で正確に作成します。競技プログラミングでは、満たすべき仕様が明確に指示されていることが特徴です。たとえば、プログラムに与えられる入力や出力の範囲や形式、実行時間やメモリ使用量などの制約が決まっています。このため、ルールが明確で、提出したコードの正誤や得点がわかりやすく示され、客観的な順位付けが容易であるため、競技性が高いものとなっています。
オンラインジャッジ
競技プログラミングの採点には自動で正誤を判定してくれる「オンラインジャッジシステム」が使われることが多いです。入社試験やプログラミング学習サイト、検定などへの利用が広がっています。
paizaスキルチェックと競技プログラミング
paizaのスキルチェックは、オンラインジャッジシステムを利用した転職・就職に利用できるコーディングテストです。競技プログラミングの要素を取り入れているため、その場でテストの採点結果を把握できます。出題の形式が競技プログラミングに近いため、paizaのスキルチェックのランク獲得にも、競技プログラミングの勉強が役立ちます。
競技プログラミングの勉強
競技プログラミングの勉強には、paizaラーニングの学習コンテンツをご活用ください。コーディングテスト対策の勉強がそのまま競技プログラミングの上達に役立ちます。
競技プログラミングコンテスト
定期的に短期間で開催されるものや年次で開催されるものなどがあります。
問題のアーカイブサイト
プログラミングコンテストで過去に出題された問題をまとめたサイトです。AtCoder、topcoder、CODEFORCESなどは問題のアーカイブサイトも兼ねています。
オンライン実行環境
競技プログラミングに参加するためのプログラミング環境は手元のマシンに構築して提出前のコードの動作テストを行えるようにしておくことが理想です。しかし、環境構築には手間がかかるため、新しい言語を試してみたい場合や、外出先でコーディングしたい場合には、手軽に使えて環境構築不要のオンライン実行環境を利用してみましょう。
難易度表
競技プログラミングの実力をつけるには多くの問題を解かなければなりません。しかし、まったく歯が立たない問題で行き詰まってしまうこともあります。そんなときには、難易度別に問題を順位付してくれている難易度表を使いましょう。自分が解ける問題と同じ難易度の問題から取り組み、解ける問題の難易度を徐々に上げていくことが可能です。
ライブラリ・テンプレート
競技プログラミングの問題を多く解いていると、以前解いた問題のコードを再利用して別の問題が解けるという事象に出会います。グラフ、文字列、数論、幾何などの各種のアルゴリズムやデータ構造のライブラリを作成してみるのはいかがでしょうか。ライブラリを作成する際は、他の人が公開しているライブラリも参考となります。
学習サイトもろもろ
paiza以外にもさまざまなプログラミング学習サイトがありますので、さまざまな学習方法を試して幅広い知識を身につけてみていきましょう。
Webサイト・その他読み物
paizaのスタッフが競技プログラミングの勉強のときに利用したことがあるサイトのリンク集です。
便利なリンク集
競技プログラミングに役立つ情報やリンクがまとまっているサイトです。
書籍
書籍は体系的に知識がまとまっています。じっくりと読み込んで地力を底上げしていきましょう。
目指せ!プログラミング世界一―大学対抗プログラミングコンテストICPCへの挑戦
- 世界的な学生プログラミングコンテストACM‐ICPCに主催者・審判・選手としてかかわってきた執筆者たちが、コンテストのしくみとその楽しさをわかりやすく解説。
プログラミングコンテストチャレンジブック [第2版] ~問題解決のアルゴリズム活用力とコーディングテクニックを鍛える~
- プログラミングコンテストの問題を通してアルゴリズムのしくみや考え方を楽しく習得。
アルゴリズム実技検定 公式テキスト 上級~エキスパート編
- 実践的なアルゴリズム構築能力を獲得!世界最高峰の競技プログラミングコンテストサイトのAtCoderが主催するアルゴリズム実技検定試験「PAST」の公式対策本!
おすすめストーリー
- Cランク獲得ストーリー(Python3)
- paizaのCランクレベルの問題であれば、どのような問題であっても約70時間で要件通りのコードが書けるようになれるPythonのストーリーです。
- Cランク獲得ストーリー(Java)
- paizaのCランクレベルの問題であれば、どのような問題であっても約75時間で要件通りのコードが書けるようになれるJavaのストーリーです。
- Cランク獲得ストーリー(PHP)
- paizaのCランクレベルの問題であれば、どのような問題であっても約70時間で要件通りのコードが書けるようになれるPHPのストーリーです。
- Cランク獲得ストーリー(C#)
- paizaのCランクレベルの問題であれば、どのような問題であっても約70時間で要件通りのコードが書けるようになれるC#のストーリーです。
- Cランク獲得ストーリー(Ruby)
- paizaのCランクレベルの問題であれば、どのような問題であっても約70時間で要件通りのコードが書けるようになれるRubyのストーリーです。
- 情報Ⅰストーリー(Python)
- 大学入学共通テストの出題教科・科目である高等学校情報科共通必履修科目「情報Ⅰ」に基づいて学習するストーリーです。
- WEBアプリケーション開発ストーリー(Python3)
- 簡易的なWebアプリケーションが作れるようになるPythonのストーリーです。
- WEBアプリケーション開発ストーリー(Java)
- 簡易的なWebアプリケーションが作れるようになるJavaのストーリーです。
- WEBアプリケーション開発ストーリー(PHP)
- 簡易的なWebアプリケーションが作れるようになるPHPのストーリーです。
- WEBアプリケーション開発ストーリー(Ruby)
- 簡易的なWebアプリケーションが作れるようになるRubyのストーリーです。
- Bランク獲得ストーリー
- paizaのBランクレベルの問題であれば、どのような問題であっても要件通りのコードが書けるようになれるストーリーです。
- Dランク獲得ストーリー
- paizaのDランクレベルの問題であれば、どのような問題であっても要件通りのコードが書けるようになれるストーリーです。
- コーディングテスト対策ストーリー
- 入社試験などで活用されているコーディングテストに合格する実力を身につけるためのストーリーです。
- 競技プログラミング入門ストーリー
- 競技プログラミングの概要を理解し、ストーリーやレベルアップ問題集で勉強して、競技プログラミングのコンテストに挑戦するきっかけとなるストーリーです。