期間は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月6日(土)で、9月20日までの半年の期間で学習を進めます。
毎週のAtCoder Beginner Contest(ABC)をペースメーカーにしていきます。
今週のABC
ABCに参加してきました。
2問AC、灰色パフォーマンスでした。
C問題以降が解けなかったのが痛かったです。
AC:2問
パフォーマンス:261
レーティング:299→295(-4)
段級位:9級
結果
Full House
与えられる5つの数字がフルハウスかどうかを判定せよ
5つの数を並び替えて、フルハウスの条件をそのまま書きました。
4分30秒でACしました。
a = list(map(int,input().split()))
a.sort()
if a[0]==a[1] and a[2]==a[3] and a[3]==a[4]:
print('Yes')
elif a[0]==a[1] and a[1]==a[2] and a[3]==a[4]:
print('Yes')
else:
print('No')
Ancester
N人の人と、その人の親の情報Piが与えられる。
番号1の人がNの人の何世代上か出力せよ。
a[i]として親の情報を辿っていきます。
cntで辿った数を記録しました。
40分(1WAしたので実質45分)でACしました。
n=int(input())
a=list(map(int,input().split()))
cnt=0
j=n
#k=5000
while j>1:
j=a[j-2]
cnt+=1
#print(j)
print(cnt)
Monotonically Increasing
長さ かつ全ての要素が 以上 以下である整数列のうち、狭義単調増加であるものを全て辞書順に出力せよ
残り時間はこの問題に取り組みました。
条件はイメージしやすいですが、実装方法がわからず時間切れでした。
次の目標
今回のコンテストは茶色に近い灰色パフォーマンス(393)でした。
B問題をまずまずの速度でACできたのは収穫です。
目標:茶色パフォーマンスを継続して出せるようにする
茶色昇級のため、目標を整理しました。
・A・B問題を高速で解く(理想5〜10分以内)
・C・D問題をどちらかあるいは両方解く