期間は6ヶ月(25週間)とし、水色コーダーを目指します。
C・D問題攻略のためアルゴリズム別学習を進めます。
今週学習したこと
今週からABC Problemsで過去問に取り組み始めました。
B問題を解くのと、アルゴリズムの分野別学習を進めます。
ABC ProblemsでB問題を30問
さらに@e869120さんの記事で分野別学習を始めました。
レッドコーダーが教える、競プロ・AtCoder上達のガイドライン【中級編:目指せ水色コーダー!】
基本アルゴリズム12個を学ぶと良いようです。
各記事ボリュームがありますが、まずは12個基本を押さえます。
全探索 | 二分探索 | 深さ優先探索 (DFS) | 幅優先探索 (BFS) |
動的計画法 (DP) | ダイクストラ法 | ワーシャルフロイド法 | クラスカル法 |
高速な素数判定法 | べき乗を高速に計算する手法 | 逆元を計算する手法 | 累積和 |
今週の学習項目は特になしです。
筆者の学習歴
学習歴はこんな感じです。
・利用言語はPython3
・Pythonの利用は業務で少し
・学習は「みんなのPython」を読んだくらい
・ABCコンテストには数回参加した(解けるのは1〜2問)
競プロではC++を使う方が多いかと思いますが、筆者はPythonのシンプルさに感動したためPythonで取り組みます。
今日が2022年8月13日(土)で、9月20日までの半年の期間で学習を進めます。
毎週のAtCoder Beginner Contest(ABC)をペースメーカーにしていきます。
今週のABC
ABCに参加してきました。
2問AC、灰色パフォーマンスでした。
C問題以降が解けなかったのが痛かったです。
AC:2問
パフォーマンス:393
レーティング:295→304(+9)
段級位:9級
結果
“atcoder”.substr()
“atcoder”の文字列から指定された数字の番号の文字列を出力せよ
2分30秒でACしました。
a,b=map(int,input().split())
s='atcoder'
print(s[a-1:b])
Nice Grid
白色と黒色のタイルが交互に並べられています。
指定された位置が、中央から数えて何周目にあるかわかれば、あとは偶奇で判断できます。
R,C=map(int,input().split())
r=abs(8-R)
c=abs(8-C)
t=max(r,c)
if t%2==1:
print('black')
else:
print('white')
“redocta”.swap(i,i+1)
“atcoder”の順番を入れ替えた文字列が与えられる。
隣同士を入れ替える操作を行うとき、文字列を”atcoder”にするために行う最短の操作数を出力せよ。
残り時間はこの問題に取り組みました。
実装方法がわからず時間切れでした。
次の目標
今回のコンテストは茶色に近い灰色パフォーマンス(393)でした。
B問題をまずまずの速度でACできたのは収穫です。
目標:茶色パフォーマンスを継続して出せるようにする
茶色昇級のため、目標を整理しました。
・A・B問題を高速で解く(理想5〜10分以内)
・C・D問題をどちらかあるいは両方解く
今回のC問題は「Bit演算」、D問題は「幅優先探索」で解ける問題でした。
最近のABCは幅優先探索が多いような気がするので、今週は幅優先探索の練習をします。