Files
Algorithm/백준/Silver/17484. 진우의 달 여행 (Small)/진우의 달 여행 (Small).py

29 lines
786 B
Python

import sys
input = sys.stdin.readline
N, M = map(int, input().split())
a = [list(map(int, input().split())) for _ in range(N)]
INF = sys.maxsize
delta = [-1, 0, 1] # d=0 left-down, d=1 down, d=2 right-down
dp = [[[INF]*3 for _ in range(M)] for _ in range(N)]
for j in range(M):
for d in range(3):
dp[0][j][d] = a[0][j]
for i in range(1, N):
for j in range(M):
for d in range(3):
pj = j - delta[d]
if 0 <= pj < M:
best_prev = INF
for pd in range(3):
if pd != d:
best_prev = min(best_prev, dp[i-1][pj][pd])
dp[i][j][d] = a[i][j] + best_prev
ans = min(dp[N-1][j][d] for j in range(M) for d in range(3))
print(ans)