雪だるまのプログラミング日記

競プロ・ARなど日々学んだことをぼちぼちまとめます

初心者のための競技プログラミングの始め方!

初めまして、初投稿です!

 

プログラミングを初めて約3年が経ちました…

しかし…

「キータ?なにそれ?」

Github?あー、なんかプログラム公開するやつでしょ?」

程度の状況です。今まで情報交換などには全く見向きもしなかったのですが、就活も近付いて来てGithubのURLを載せろと言われたり、人に伝わる文章を書く練習をしたいというのもあり、

ついにはじめました!ブログ!

 

内容は主に最近はじめた競技プログラミングのことを書こうかと思います。

 

文章を書くのも初めてだし、得意でもないのでまずは質より量を書いて慣れていきたいと思います!

最低週一は書きたいな…

 

それでは初回の今日は、競技プログラミングをこれから始めようという方向けに書きたいと思います!

 

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

競技プログラミング(またはプログラミングコンテスト)とは、その名の通りプログラミングで競う大会のことです。いかに速く正確にプログラムが書けるかを競います。

大会と言ってもネットで参加できるのでかなり敷居は低く始めやすいです。

 

問題は、「ある入力に対して、このような出力をするプログラムを書け」のような形で与えられます。

簡単な例でいうと「入力として整数Nが与えられるので、Nが10以下なら"YES"、それ以外なら"NO"と出力するプログラムを作ってください。」みたいな感じです。

 

こちらはAtCoderというコンテストの問題の例になります。

A - Two Coins

 

どのコンテストがおすすめ?

プログラミングコンテストは世界規模で行われるものから主に日本だけのものまで様々です。

その中でも初心者におすすめなのがAtCoderです!

理由は

  • レベルごとに分かれている
  • 競技人口が多い
  • 問題文が日本語
  • チュートリアルや解説もある
  • 定期的に(毎週末)開催されている

特にコンテスト終了後にYouTubeの生配信で解説がされるのが良いです。

 

AtCoderは基本的に

  • AtCoder Beginner Contest(通称ABC)
  • AtCoder Regular Contest(通称ARC)
  • AtCoder Grand Contest(通称AGC)

の三つの種類があり、下のものほど難しくなります。初心者はABCから始めるのが良いでしょう。

 

どうやって勉強したら良い?

勉強法ですが、まずプログラムの書き方がわかっていなければ解けません。なので自分が得意な言語を一つ選んで、その入門書などを一通り勉強するのが良いと思います!

ちなみに自分はC++で書いています。理由は競プロで一番メジャーぽかったからです(笑) 

 

ある程度、プログラムの書き方がわかったら次はひたすら過去問を解きましょう!そして実際にコンテストに出てみましょう!出てもデメリットはありませんのでどんどん経験を積むことをおすすめします。

 

どの過去問を解けば良いかわからないという人はこの記事がおすすめです。

AtCoder に登録したら次にやること ~ これだけ解けば十分闘える!過去問精選 10 問 ~

 

まとめ

競技プログラミングと聞くとレベルが高そうに聞こえますが、実際は初心者でも始めやすいものです。

ぜひみなさん競プロライフを楽しみましょう!