#自己紹介
当記事を閲覧してくださり誠にありがとうございます。
都内の私立大学経営学部に在籍しているさんちょと申します。
プログラミングを始めて半年ちょいのプログラミング初学者(Python)です。
#はじめに
当記事はプログラミング初学者がAtCoderに登録して茶色(レーティング562)に到達するまでに行った学習ステップを簡単に記録したものとなっております。
#AtCoderとは
アルゴリズムに関する問題をプログラミングによって解き、解いた問題数や時間を競い合う競技プログラミングのコンテストを開催する国内最大級のサイト
ユーザーはコンテストの結果に応じてサイト内でレーティングされ、レーティングに応じてランク(色)が付されます。
レーティング | ランク(色) | ユーザー分布 |
---|---|---|
2800- | 赤 | 上位0.2% |
2400-2799 | 燈 | 上位0.6% |
2000-2399 | 黄 | 上位2% |
1600-1999 | 青 | 上位5% |
1200-1599 | 水 | 上位10% |
800-1199 | 緑 | 上位20% |
400-799 | 茶 | 上位35% |
-399 | 灰 | 上位100% |
※ユーザー分布は2021/11/25時点 |
#学習ステップ
##1. ABC(AtCoder Beginner Contest)に参加してみる
重要なことはAtCoderを体験してみることです。
- ユーザー登録
- AtCoder内で最も簡易的なコンテストABCに参加
現在の自分の実力を確かめてみましょう!
##2. AtCoder Problemsで過去問
他ジャンルの学習法と同様にAtCoderでも過去問練習が重要です。
-
AtCoder ProblemsでUser IDを入力
-
UserのRecommendation機能をチェック
→自分のレベル感に適した問題が自動的に提示 -
EasyとModerateに取り組んでみましょう!
-
目安は1日3時間取り組んでEasy5問、Moderate2問程度
※Difficultは余力のある場合のみ取り組んでみて下さい。
##3. 解法の記録
競技プログラミングで重要なことの1つとしてアルゴリズムの理解度があります。
アルゴリズムの理解度を高めるために過去問やコンテストで解けなかった問題の解法(自分の解法と正解の解法)を逐一まとめておきましょう!
例
@Anti-Division ABC137C問題
◎A以上B以下の整数でCでもDでも割り切れない数の個数
・自分の回答
①BをCで割った切り捨て数-AをCで割った切り上げ数
②BをDで割った切り捨て数-AをDで割った切り上げ数
if B>C*Dの場合
③BをC×Dで割った切り捨て数-AをC×Dで割った切り上げ数
回答:(B-A)-①-②+③
else
回答:(B-A)-①-②
・正解
問題の条件を満たすB以下の整数の個数-問題の条件を満たす(A-1)以下の整数の個数
問題の条件を満たすx以下の整数の個数は以下の式
x-(x//C)-(x//D)+(x//lcm(C, D))
※自分がわかる程度で簡潔に書くことがポイント!
##4. 最後に
- 毎週開催されるABCに必ず参加
※頻繁に参加することでレーティング伸び率が向上
- A問題とB問題はできる限り早く解く
- C問題は時間をかけて必ず解く
まずはA,B,C問題を必ず解けるようになりましょう!