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

Atcoderでもっと多くの問題を解きたい!と言うことで学習していきます。

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

筆者の学習歴

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

まだまだ入門と言う感じですね。

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

・利用言語はPython3

・Pythonの利用は業務で少し

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

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

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

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

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

今週学習したこと

今週からABC Problemsで過去問に取り組み始めました。

ABC ProblemsでA、B問題を中心に50問ほど解きました。

A問題はサクサクと進めるので、まずはA問題を全部解ききるように進めます。

学習内容

ABC ProblemsでA、B問題を50問

次の目標

茶色に昇級する。

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

学習内容

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

・C・D問題をどちらか解く

私は今、A・B問題を解くのに15分前後かかっています。

これを10分以内で解くだけでも、順位は1,000以上アップが期待できます。

今週のABC

ABCに参加してきました。

abc2534

初の3問AC、茶色パフォーマンスを出せました!

進歩を感じられて嬉しいですね。

abc254

ABC結果

AC:2問

パフォーマンス:669

レーティング:181→221

段級位:9級

結果

A問題

Last Two Digits

与えられた整数の下2桁を出力せよ

pythonの文字列として受け取り、末尾の2文字を出力しました。

ここは2分30秒と幸先の良いACです。

N=input()
print(N[-1*(len(N)-1):])
B問題

Practical Computing

与えられる数Nに対して、長さNの整数列を出力せよ。

・j=0またはj=ij=iの時、aij=ai,

・それ以外の時、aij=ai-1*aj-1+ai-1j

(N+1)×Nの2次元リストAを用意して、0で初期化した後、条件に従い値を更新します。

2次元リストの初期化と更新、出力形式を合わせるのに時間がかかりました。

かなり手こずりましたが、B問題を46分かけてAC。

N=int(input())

A = [[0 for j in range(N+1)] for i in range(N)]
A[0][0]=1

for i in range(0,N):
  for j in range(i+1):
    if j==0 or j==i:
      A[i][j]=1
    else:
      A[i][j]=A[i-1][j-1]+A[i-1][j]
  
  #for k in range(i):
  #print(A[i])
  #print(''.join(A[i]))
  
  L=[str(a) for a in A[i] if a!=0]
  L=" ".join(L)
  print(L)
#print(A)
C問題

K Swap

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

aiとai+Kの値を入れ替える操作を無制限に行うとき、数列を昇順に並び替えられるか判定せよ。

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

modKで考えて解けることに気づきました。

n,k=list(map(int,input().split()))
A=list(map(int,input().split()))
#print(A)

B=sorted(A)
#print(B)

C=A
D=[]

for i in range(k):
  #D=sorted(C[i::k].sort())
  #print(D)
  D=C[i::k]
  D.sort()
  C[i::k]=D
  #print(D)
  #print(C[i::k])

if C==B:
  print("Yes")
else:
  print("No")
#print(C) 

ここも37分かけてACしました。

感想

A,B,C問題をACすることができました。

パフォーマンスも669だったので、Dも解ければ緑パフォーマンスが見えそうです。

来週学習すること

C、D問題以降も勝負できる様にするため、まずはAtCoder ProblemsでA、B問題を解ききります。

その後は、ソートやDPなど分野に絞って学習していく予定です。

・AtCoder Problems

コメントを残す

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