AtCoderを始めよう！(序盤の立ち回り)

#AtCoderを始めよう！(序盤の立ち回り)
こんにちは。初めまして。Pkodamaという者です。最近、今は巷で話題のAtCoderを始めたい！だけど何からやっていいかわからない...という方をよく見かけるので今回は記事にしてみました。内容はAtCoder序盤は具体的にどうやったらいいの的な感じです。AtCoder始めたい人からAtCoderのレート200くらいの人までをターゲットに書くつもりです。

##序章
まずAtCoderって何？競技プログラミングって何？って方はE869120さんの[レッドコーダーが教える、競プロ・AtCoder上達のガイドライン【初級編：競プロを始めよう】](https://qiita.com/e869120/items/f1c6f98364d1443148b3)の「0.はじめに」「1-1.競プロとは何か」を読んでみるといいかもしれません。まぁ競技プログラミングってのはプログラミングを使って問題を解くんだなくらいわかればいいとおもいます。

以降はAtCoderのアカウントを持っていることとします。まだアカウントない方は[AtCoderのサイト](https://atcoder.jp)にてアカウントを作ってください。

##step1.言語を決めよう
競技プログラミングをやる言語を決めましょう。決めている方は次の章まで飛ばしてもらって結構です。AtCoderは多くの言語をサポートしていますが、特にこだわりがないならC++を私は強く押します。
理由としては
・C++は処理速度が速い
・ライブラリが充実している
そして何よりもC++を使っている人が他の言語に比べ圧倒的に多いです。体感8割くらいでしょうか。多くの人がやっているということはそれだけ情報が多いということです。個人ブログなどでもC++のコードの場合が多いです。
ちなみにC++の次にユーザーが多い言語はpython、java、c#あたりでしょうか。

##step2.開発環境の構築をしよう！
開発環境の構築をしましょう。AtCoderにプログラムを直打ちしている方をたまに見かけますが開発環境を作ることを強く推奨します。これをすると
・手元でコンパイル、プログラムを実行できる！
・コード自動補完機能、スペニットを使い効率的にプログラムを書ける！
・デバッグできる！
など様々な恩恵が得られ世界が変わります。
具体的にはエディタというものを入れましょう。僕はVisualStudioCodeというものを使っていて、これはかなり有名なエディタで使っている人も多いのでオススメです。

導入方法は以下の記事を参照すると良いです
windows→[Visual Studio Codeで競プロ環境構築(導入編)
](https://t.co/y12pPteVlR?amp=1)macOS→[Visual studio codeで競プロ環境構築[mac OS]](https://qiita.com/EngTks/items/ffa2a7b4d264e7a052c6)

##step3.プログラミングができるようになろう！
いくら問題の考察ができてもプログラムを書くことができなかったら点数はもらえません。プログラミングができるよ！(100点、200点問題が解ける程度)って方はstep5まで飛ばしてもらって結構です。
以降は言語はC++として話をさせていただきます。
C++は実はAtCoderの公式の入門教材があります。[APG4b](https://atcoder.jp/contests/APG4b)というものです。評判も良くおすすめです。これの「3.01.数値型」を埋めるといいと思います。ここまでの知識で100点問題、200点問題のおおよそは解けます。
それ以降は大事な話も多く、もちろんやりたければやっても良いのですが如何せん難しく、ポインタの話などはC++始めたの方がつまずきやすいところという認識です。このあたりを理解するより問題を解いて行き基本的な変数、for文、if文などをきちんと定着させる方がいいと思います。

##step4.100点問題、200点問題を解けるようになろう！
AtCoderの100点問題、200点問題の多くは前述した基本的なプログラミングの知識が問われます。まずはここの点数帯の問題を解けるようになりましょう。AtCoderのコンテストの過去問は[AtCoderProblems](https://kenkoooo.com/atcoder/#/table/)という有志によるサイトで見れます。このサイトでは自分の記録を確認できたりバーチャルコンテストを開けたりできる便利で人気のあるサイトです。
プログラミングに慣れていない方はAtCoder Beginner ContestのA問題、B問題の過去問をとくといいと思います。注意ですが、ABC057以前は問題の傾向が違うためABC001から解くのではなく最近のから解く方がいいです。この辺がすらすらと解けるように慣れば第一関門突破です。

##step5.300点問題を解けるようになろう！
300点問題からは少しずつ競技プログラミングっぽくなってきます。300点以降は簡単アルゴリズムや数学的工夫が問われ始めます。基本は300点問題をいっぱい解いて行きましょう。この辺が解けるようになると茶色に、素早く解けるようになると緑色になれます。以下優先度の高い順に書いて行きます。

####AtCoder に登録したら次にやること ～ これだけ解けば十分闘える！過去問精選 10 問 ～
まずはけんちょんさんの[AtCoder に登録したら次にやること ～ これだけ解けば十分闘える！過去問精選 10 問 ～](https://qiita.com/drken/items/fd4e5e3630d0f5859067)を埋めてみるといいと思います。この記事はとってもオススメです。

####C++の様々な知識
また、C++の知識不足を感じたら前述の[APG4b](https://atcoder.jp/contests/APG4b)の第3章以降を埋めるのもいいと思います。STLは[厳選！C++ アルゴリズム実装に使える 25 の STL 機能【前編】](https://qiita.com/e869120/items/518297c6816adb67f9a5)を読むといいです。

####蟻本
また、「蟻本」と呼ばれる本も是非読みましょう([Amazonのリンク](https://www.amazon.co.jp/プログラミングコンテストチャレンジブック-第2版-～問題解決のアルゴリズム活用力とコーディングテクニックを鍛える～-秋葉拓哉/dp/4839941068))。この本は難しく完璧にすれば橙色(レート2400-)にもいけると言われるほどですが、基本的なこともちゃんと乗っているいい本です。早く読んで損はないので是非買いましょう。
[AtCoder 版！蟻本 (初級編)](https://qiita.com/drken/items/e77685614f3c6bf86f44)もオススメです。

累積和/DFS/BFS/ナップサックDP/二部探索あたりがわかれば300点問題は大体解けます。

###step6.400点問題を解けるようになろう！
400点問題が解けるように慣れば水色になれます。水色まで来るともうプログラミングは十分できると言えるでしょう。ただ結構要求される知識が多く大変です。ここに関しては以前私が記事を書いたので是非参考にしてください。
・[AtCoder水色になりました](https://qiita.com/pkodama/items/93ab0b654d2597e42ac3)
また上の記事を書いた当時はなかった以下の記事もオススメです。
・[レッドコーダーが教える、競プロ・AtCoder上達のガイドライン【中級編：目指せ水色コーダー！】](https://qiita.com/e869120/items/eb50fdaece12be418faa)
「分野別　初中級者が解くべき過去問精選 100 問」がいい感じです。

###最後に
とにかくいっぱい問題を解きましょう。最初の方に自分競技プログラミング向いてないかも...って思うことがあるかもしれませんが、慣れてないだけかもしれません。大体300問くらいACすれば茶色に、500問解けば緑色になると思います。是非頑張ってください！！！
あとコンテストには積極的に出ましょう！コンテストは個人的に最高効率の精進だと思います！ガンガン出ましょう！
何かわからないことがあれば[私のツイッター](https://mobile.twitter.com/watasihakodama)にて聞いてもらえらば対応します。それでは〜