feature image

2019年3月16日 | ブログ記事

競技プログラミングを始めよう【新歓ブログリレー2019 8日目】

この記事は新歓ブログリレー2019 8日目の記事です。たぶん。


18Bのeiyaです。競技プログラミング(競プロ)やCTFをしています。昔はゲーム制作もしていたんですが忙殺されてここ3年くらいまともに作っていません。悲しいです。
競技プログラミングは出来る側の人間のはずなんですが僕よりも強い人類が東工大には沢山います。楽しいです。

対象読者

この記事は以下の人を対象にしています。

競技プログラミングとは

ある課題を解くプログラムを作成するというゲームです。
例え次のような問題があります。
https://atcoder.jp/contests/abs/tasks/abc086_a
https://atcoder.jp/contests/abs/tasks/abc087_b
AtCoderというサイトでは、プログラムを作成する速さを競うコンテストが毎週末に行われています。

競技プログラミングで身につくこと/つかないこと

競技プログラミングを学ぶと以下の能力を身につけることができます。(主観)

ただし、以下の能力は競技プログラミングでは身につけることが出来ないので、これらの能力を得たい場合は追加の勉強が必要になります。

なぜ競技プログラミングなのか

プログラミングを勉強しても、すぐにはゲームのようなグラフィックがしっかりとした完成品を作るのは難しいです。一方競技プログラミングは簡単な問題から専門にしている人でもなかなか解けない難しい問題まであるので、勉強すればするほど解ける問題が増え、成長を実感することが出来ます。
また、難しい問題は競技プログラミング向けの知識が必要になってきますが、簡単な問題に必要な知識はゲームプログラミング等の他のプログラミングでも使える基本的な知識であるため、最終的な目標が競技プログラミングでなくてもプログラミングの入門として役立ちます。

さあ始めよう

先ほど問題例として出したAtCoderというサイトは、2019年3月現在日本で一番大きな競技プログラミングの会社です。いまから始めるならばAtCoderで始めると良いと思います。
https://atcoder.jp/
___-1

ページを開いたら、右上の「新規登録」からアカウントを作り、practiceでコードの提出方法を確認しましょう。

普段の勉強は、プログラミングの初歩から学ぶ場合はAtCoder Programming Guide for beginnersで勉強すると良いと思います。
競技プログラミングの初歩から学ぶ場合はAtCoder Beginners Selectionがおすすめです。

また、AtCoderで毎週末に開かれるコンテストにも積極的に参加し、自分の実力を示すレートを挙げて、楽しみましょう。
___

twitterも始めると良いと思います。コンテストが終わった後などは問題に関する感想をつぶやく人も多いので、そういった人をたくさんフォローすると色々な視点から問題を見ることが出来ます。

twitter上ではAtCoderのレートがやたらと高い人がいますが、実際はこんな感じです。twitterで見るほど上の人が多いわけでは無いので安心してください。
___-2


明日は syak さんの記事です。お楽しみに。

eiya icon
この記事を書いた人
eiya

プログラミングをやっています。 メイン言語はC++14 競プロ/ゲーム制作/CTF

この記事をシェア

このエントリーをはてなブックマークに追加
共有

関連する記事

ERC20トークンを用いた宝探しゲーム(真)の提案【アドベントカレンダー2018 10日目】 feature image
2018年11月3日
ERC20トークンを用いた宝探しゲーム(真)の提案【アドベントカレンダー2018 10日目】
Azon icon Azon
2021年5月19日
CPCTF2021を実現させたスコアサーバー
xxpoxx icon xxpoxx
2023年4月27日
Vulkanのデバイスドライバを自作してみた
kegra icon kegra
2023年9月26日
traP コンペ 2023 夏 sponsored by ピクシブ株式会社 運営後記
abap34 icon abap34
2023年7月13日
アルゴリズム班はやとき王選手権「競(けい)プロ」を開催しました!
abap34 icon abap34
2022年10月11日
アルゴリズム班にKaggle部を設立し、初心者向けデータ分析体験会を開催しました!
abap34 icon abap34
記事一覧 タグ一覧 Google アナリティクスについて