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

期間は6ヶ月(25週間)とし、水色コーダーを目指します。

C・D問題攻略のためアルゴリズム別学習を進めます。

今週学習したこと

学習内容

・特になし

安全情報確保支援士の学習をしており、競プロの学習はできませんでした。

@e869120さんの記事の分野別学習記録

レッドコーダーが教える、競プロ・AtCoder上達のガイドライン【中級編:目指せ水色コーダー!】

基本アルゴリズム12個を学ぶと良いようです。

各記事ボリュームがありますが、まずは12個基本を押さえます。

全探索 二分探索 深さ優先探索 (DFS) 幅優先探索 (BFS)
動的計画法 (DP) ダイクストラ法 ワーシャルフロイド法 クラスカル法
高速な素数判定法 べき乗を高速に計算する手法 逆元を計算する手法 累積和

 

筆者の学習歴

学習歴はこんな感じです。

筆者の競技プログラミング歴

・利用言語はPython3

・Pythonの利用は業務で少し

・学習は「みんなのPython」を読んだくらい

・ABCコンテストには数回参加した(解けるのは1〜2問)

競プロではC++を使う方が多いかと思いますが、筆者はPythonのシンプルさに感動したためPythonで取り組みます。

今日が2022年9月4日(日)で、9月20日までの半年の期間で学習を進めます。

毎週のAtCoder Beginner Contest(ABC)をペースメーカーにしていきます。

今週のコンテスト

ABC267

ABCに参加してきました。

ABC267

abc267

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

A、B問題しか解けませんでした。

ARC結果

AC:1問

パフォーマンス:279

レーティング:408→393(-15)

段級位:9級

早速灰色に降級しました。

また上げていくしかないですね。

結果

A問題

Saturday

次の土曜日までの日数を出力せよ。

3分10秒でACしました。

S=input()
d={'Monday':5, 'Tuesday':4, 'Wednesday':3, 'Thursday':2, 'Friday':1 }
print(d[S])
B問題

Split

ボウリングピンの状態が与えられる。

スプリットかどうかを判定せよ。

78分(トータル81分)でACしました。

ボウリングのピンの状態を7列で表すところまではすぐ思いつきました。

7列の状態(両端残りなら1000001)からスプリットかの判定に手こずりましたが、以下の文字列があるか検索すればよかったです。

[101,1001,10001,100001,1000001]

ここで80分くらい使ってしまったのが痛すぎました。

import itertools

S=list(input())
sp=False
b=[0]*7

if S[0]=='1':
  print('No')
  exit()
  
if S[6]=='1':
  b[0]=1
if S[3]=='1':
  b[1]=1
if S[1]=='1' or S[7]=='1':
  b[2]=1
if S[0]=='1' or S[4]=='1':
  b[3]=1
if S[2]=='1' or S[8]=='1':
  b[4]=1
if S[5]=='1':
  b[5]=1
if S[9]=='1':
  b[6]=1
  
#print([k for k, g in itertools.groupby(b)])
if([k for k, g in itertools.groupby(b)])==[0,1,0]:
  print('No')
elif([k for k, g in itertools.groupby(b)])==[1,0,1]:
  print('Yes')
elif len([k for k, g in itertools.groupby(b)])==1:
  print('No')
elif len([k for k, g in itertools.groupby(b)])==2:
  print('No')
else:
  print('Yes') 
C問題

Index A(Continuos Ver)

長さNの整数列Aが与えられる。

長さMの連続部分列Bについて の最大値を求めよ。

20分ほど考えましたが解答を提出できませんでした

素直に(N-M)×Mのループを組むとT LEしてしまいます。残り時間はこの問題に取り組みました。

コンテスト後に、(i番~i+M番目までの計算値)を関数化しておけば解けることに気づきました。

あと15分くらいあれば解けそうでしたので、悔しいです。

次の目標

目標:緑色パフォーマンスを出せるようにする

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

学習内容

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

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

安定して茶色パフォーマンスを出し、できれば緑色パフォーマンスを目指します。

コメントを残す

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