#概要
最近競技プログラミングを始めてみたはいいけど何からやり始めてどういう流れで進めていけばいいのか、サクッと書いてくれてる記事がなかったのでまとめることにする。
熟練者からしたらツッコミどころ満載かもしれないけど温かい目でお願いします。
#まずはじめに
とりあえずAtCoder( http://atcoder.jp/ )さんに登録しよう。
調べれば色々あるし英語に慣れた方がいい派もいるけど日本人はとりあえずAtCoderで始めればいいと思う。
#登録したら
AtCoder上で初心者用に10問練習セットがある( https://abs.contest.atcoder.jp/ )。
この10問をググりながらでいいから自分で解いていこう。プログラミング言語は強いこだわりがないなら**C++**で始めること。
Macユーザーは環境構築しなくてもC++は使えるよ。
(テキストエディタ(SublimeTextがオススメ)でコード書いて、<ファイル名>.cppで保存して、ターミナルからc++ <ファイル名>.cppでコンパイルして、./a.outで実行)
この辺は書き出したらキリないから各々「C++ 実行方法」とかで調べてね。
#上の10問セットが全部解けたら、、
AtCoderでは基本的に毎週土曜日9時からAtCoder Beginner Contest(通称ABC)があるからそれに参加していけばオッケー!!
ABCは大体2時間で4問出題されるから、時間内に全完できるようになるまではABCに参加したらいいよ。youtubeで解説もしてくれるから分からなかったらそっち聞こうね。
全完できたらAtCoder Regular Contest(通称ARC)に移ったらいいかな。
そこまできたら目的に合わせてレッドコーダー目指したり、TopCoderに移ったり、各々で判断。
僕はとりあえずAtCoderでコンテスト出まくってレッドコーダー目指します。
#毎週土曜日が待ちきれない人
ABCの過去問がAtCoderのホームやAtCoderProblem( https://kenkoooo.com/atcoder/ )で見れるから解いてみるか、
AIZU ONLINE( http://judge.u-aizu.ac.jp/onlinejudge/finder.jsp?course=ITP1 )ってサイトもオススメ。Preblemのとこに問題めちゃくちゃあるしチェックもしてくれる。
初心者ならAll-Japan High School Programming Contest:Prelimから解き始めるといいかもネ。
本で勉強したいならプログラミングコンテストチャレンジブック [第2版] ~問題解決のアルゴリズム活用力とコーディングテクニックを鍛える~という本は必読の一冊!
僕は手元に置いて索引として使ってるけど、この本を一周するだけで見違えるレベルになる。
#補足
レベルが上がってくるとアルゴリズムの知識が必要になってくるけどそれはやりながら、その都度調べながら覚えていけばいいと思う。アルゴリズムだけ勉強しても結局コード書けんかったりそもそも面白くなくて飽きたら元も子もないし。
もっと速いコード書きたいなとか、スッキリしたコードが書きたくなったらランキング上位者のコードを読んで学んでいこう。
#おまけ
僕が競技プログラミング好きになったのは、最初はすごい簡単な問題なのに段々難しくなってきて、forループ回して順番に探索していけば解けるんだけどそれだと時間がないみたいな問題に直面してからです。もっと早く解く書き方はないか、そこで頭を使う感じがたまらなく楽しかったからです。
自分は今電気系の学科に通っているが、それでも競技プログラミングをやっている人は一部だし、もっと広まってほしい、敷居は低いということを知ってほしいと思いこの記事を書いています。
学校の勉強が退屈だったりエネルギー向ける先がなくて暇だったりしたらやってみてもいいんじゃないでしょうか。友達と一緒にやったら就活でも役立つかもね!