masuTomo’s blog

競技プログラミングの勉強メモです.主にPythonを使用します.数学の記事も書くかもしれません.

アルゴ式のテスターに選ばれました(3日目)

更新しないって言ったじゃないか

進捗

今日も少し進めてQ2-5~Q2-7をやりました.まだ何とか自力ACです.

感想

Q2-7で少しつまりました.DPの部分ではなくて,loopの回し方がうまくいっていなかったり,二次元リストの初期化をミスしていたりしました. 勉強したい考え方以外の部分でミスしたりわかっていないかったりする部分があるのも,学習の妨げになるのだと感じました.

ちなみにQ2-7は解説にもあるように最初に入力で与えられるマス目に書かれている数字を逆順に保存すれば2-6と同じだなと思いましたが,それだと練習にならないなと思って,問題の意図通り実装しました.

別解はこんな感じですかね.

N = int(input())
A = [ list(reversed(list(map(int,input().split())))) for _ in range(N)]

dp = [[100000] * N for _ in range(N)]
dp[0][0] = A[0][0]

for i in range(N):
    for j in range(N):
        if i-1 >= 0:
            dp[i][j] = min(dp[i-1][j]+A[i][j], dp[i][j])
        if j-1 >=0:
            dp[i][j] = min(dp[i][j-1]+A[i][j], dp[i][j])
print(dp[N-1][N-1])

おわりに

MacbookAirをポチってしまいました.M1の整備品でメモリ16GBのものが出ていたのでつい...ストレージが256なのが不安...