【AtCoder20週目】競プロ初心者が6ヶ月で水色コーダー目指す学習記

期間は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に参加してきました。

abc263

2問AC、灰色パフォーマンスでした。

C問題以降が解けなかったのが痛かったです。

abc-263

ABC結果

AC:2問

パフォーマンス:261

レーティング:299→295(-4)

段級位:9級

結果

A問題

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')
B問題

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)
D問題

Monotonically Increasing

長さ N かつ全ての要素が 1 以上 M 以下である整数列のうち、狭義単調増加であるものを全て辞書順に出力せよ

残り時間はこの問題に取り組みました。

条件はイメージしやすいですが、実装方法がわからず時間切れでした。

次の目標

今回のコンテストは茶色に近い灰色パフォーマンス(393)でした。

B問題をまずまずの速度でACできたのは収穫です。

目標:茶色パフォーマンスを継続して出せるようにする

茶色昇級のため、目標を整理しました。

学習内容

・A・B問題を高速で解く(理想5〜10分以内)

・C・D問題をどちらかあるいは両方解く

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です