競技プログラミング初心者が6ヶ月で水色コーダー目指す学習記【AtCoder-4週目】

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

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

筆者の学習歴

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

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

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

・利用言語はPython3

・Pythonの利用は業務で少し

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

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

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

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

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

今週学習したこと

今週4月2日(土)〜4月10日(日)は、DPの学習をしていました。

競プロの時間があまり取れず、DPの練習だけしました。

こちらEducational DP ContestのページでA-E問題を解きました。

今週のABC

ABCに参加してきました。

abc247

結果はこんな感じでした。

abc247

 

ABC結果

AC:2問

パフォーマンス:292

レーティング:111→127

段級位:11級

結果

A問題

Move Right

特に問題はないですね。

コードは冗長ですが、場合分けして解きました。

a = input()
print('0'+a[0]+a[1]+a[2])
B問題

Unique Nickname

他の人と被らない性、名を選ぶアルゴリズムをDPで実装しようとしましたが、dpの取り方がわからず断念。

N<100なので、普通にループを組んで処理すれば良かったようです。

 
C問題

1 2 1 3 1 2 1

dpで更新すればTREすることもなく処理できます。

def ans(n):
    a=['']*18
    #print(a)
    a[1]='1'

    for i in range(2, n+1):
        a[i] = a[i-1] +' '+ str(i) + ' ' + a[i-1]
    print(a[n])
 
N=int(input())
ans(N)

感想

2問目までは安定して解ける様になってきました。

3問目ACをしないとスコアが伸びませんので、C、D問題にでやすいDP問題を狙い目に練習していきます。

来週学習すること

D問題以降も勝負できる様にするため、グラフの学習をします。

また、DPの練習も進めます。

ABCの過去の問題も少しずつ解き進めたいですね。

Educationl DP Contest / DPまとめコンテスト

DFS (深さ優先探索) 超入門! 〜 グラフ・アルゴリズムの世界への入口 〜【前編】