はじめに
こんにちは。
2026年2月7日に開催されたABC444にて入緑しました。
振り返りがてら学習に使用したコンテンツ等を書いていきます。
自己紹介
- 大学学部卒(情報系)
- ゲームプログラマー(C++)
なので、プログラミングと数学に関しては初心者というわけではありません。
2025/08 AtCoder登録
2025/10 入茶
2026/02 入緑
コンテンツ等
AtCoder Beginner Contest
参加しないとレートが変動しないので、当たり前ではあります。
予定が無い時は寝落ちした1回を除いて全てRatedで参加しています。
練習で解けるようになっても、本番の緊張感の中で解法が思いつかないということも未だに多々あります。
配点を見て逃げるという戦略もありといえばありかもしれませんが、本番特有の緊張感に慣れるためにも、極力参加したほうが良いと個人的には思います。
AtCoder Daily Training
(コース変更前の話)
以下ADT。
灰色の頃はEASY、茶色下位~中位くらいまではMEDIUMに参加していました。
自分の実力に合った難易度の問題を解く練習にピッタリかと思います。
制限時間があるため、メリハリをつけて練習をできるのも良いところです。
C問題までを安定して早く解く練習をしたい方にはおすすめです。
茶色上位になって本格的に緑色を目指すとなった際にはD問題を解く練習をしたくなったため、D問題が1問しか含まれないADTは使用しなくなりました。
今後早解きの練習をしたくなった際には再度使用するかもしれません。
AtCoder Problems
色々できる凄いサイト。
茶色になりたての頃に、茶Diffの問題をDiffの低い順にひたすら解いて、C問題を解く練習をしました。
またRecommendationという今の自分のレートを踏まえておすすめの問題を提案してくれる機能があり、これは今でも使用しています。
加えて自分のAC数等、解いた問題に関する統計情報を見ることができます。
現状は練習の際に解く問題選定は次で述べるAtCoder NoviStepsにて行うことのほうが多いですが、気分転換でこちらのRecommendationから選ぶこともあります。
統計情報を見られるのがとても良く、埋まっていくグラフや増えていく数字を見ることでモチベーションの維持にとても役立っています。
AtCoder NoviSteps
色々できる凄いサイトその2。
解いた問題に対して手動でステータスを設定でき、ACと解説ACを区別することができるため管理はこちらを使用していました。
手動で各問題に設定された難易度は信頼性が高く、解法毎やレベルに合わせた問題集もあるため自分が取り組みたい内容がはっきりしている場合はおすすめです。
私は茶色上位になって苦手なアルゴリズムやD問題を解くという目標がはっきりしてからはこちらを使用していました。
ただ発展途上のサービスのため、まだ問題集に茶色コーダーが習得すべき内容について網羅されているわけではありません。
無いものは自分で補いつつ、活用していくのが良いかと思います。
本
問題解決力を鍛える!アルゴリズムとデータ構造
いわゆるけんちょん本。
各アルゴリズムやデータ構造について詳細に分かりやすく説明されています。
中身を知っていると計算量について考えやすくなったり、問題を解く際に適切に選択できるようになったりするのでおすすめです。
私は中身に関して読みはしましたが、問題に関しては一切問いていません。
問題演習は次に紹介する鉄則本で行いました(重複していない部分もありますが)
競技プログラミングの鉄則
いわゆる鉄則本。
競技プログラミングで使用する典型的な知識を、AtCoder上で問題を解きながら学習できます。
この本の内容だけで緑色になるには十分だと思います。
競技プログラミングの本をどれか一冊だけ購入するならこの本が良いと思います。
生成AIについて(追記)
書こうと思って忘れていたので追記。
問題選定等色々試しましたが、結局はコードレビュー的に使うのに落ち着きました。
- WAやREの原因を訊く
- コードの改善案を訊く
- 別解を訊く
等していました。
おすすめの勉強法
- AtCoder Beginner Contestへの参加
- AtCoder NoviStepsでのグレード埋め(~2Q)
- 鉄則本
上記の3つをベースにするのがおすすめです。
ただそれだけだとモチベーションの維持が大変な可能性もあるので、
- AtCoder Daily Trainingへの参加
- AtCoder Problemsの統計情報を充実させる
- SNSやリアルのコミュニティへの参加
- 他コンテストへの参加
等、自分がモチベーションを高められる取り組みも並行するのが良いと思います。
おわりに
次の目標は入水...と言いたいところですが、とりあえずは緑で安定することです。
安定したら入水に向けて取り組んでいきます。
おまけ
ローカルで緑色になるために学ぶのが良いと思ったアルゴリズム等をまとめていたので、以下に記載しておきます。
- アルゴリズム
- 全探索
- ビット全探索
- 再帰
- 累積和
- いもす法
- 二次元累積和
- 二次元いもす法
- 二分探索
- 尺取法
- 動的計画法
- 貪欲法
- BFS
- DFS
- 二部グラフ判定
- ダイクストラ法
- ワーシャルフロイド法
- クラスカル法
- 座標圧縮
- ランレングス圧縮(RLE)
- 数字、数学
- 進法変換
- ビット演算
- 素数列挙
- 約数列挙
- 最大公約数
- 最小公倍数
- 素因数分解
- データ構造(C++)
- 変数
- 配列
- string
- set/unordered_set
- map/unordered_map
- stack
- queue
- deque
- priority_queue
- Union-Find
