import sys
n,m=map(int,sys.stdin.readline().rstrip().split())
graph=[]
v=[[[101]*3 for _ in range(m)] for _ in range(n)]
for i in range(n):
graph.append(list(map(int,sys.stdin.readline().rstrip().split())))
for i in range(m):
for j in range(3):
v[0][i][j]=graph[0][i]
for i in range(1,n):
for j in range(m):
if j>0:
v[i][j][0]=min(v[i-1][j-1][1],v[i-1][j-1][2])+graph[i][j]
if j<m-1:
v[i][j][2]=min(v[i-1][j+1][0],v[i-1][j+1][1])+graph[i][j]
v[i][j][1]=min(v[i-1][j][0],v[i-1][j][2])+graph[i][j]
result=v[n-1][0][0]
for i in range(m):
for j in range(3):
result=min(result,v[n-1][i][j])
print(result)
import sys
n,m=map(int,sys.stdin.readline().rstrip().split())
graph=[]
v=[[[float('inf')]*3 for _ in range(m)] for _ in range(n)]
for i in range(n):
graph.append(list(map(int,sys.stdin.readline().rstrip().split())))
for i in range(m):
for j in range(3):
v[0][i][j]=graph[0][i]
for i in range(1,n):
for j in range(m):
if j>0:
v[i][j][0]=min(v[i-1][j-1][1],v[i-1][j-1][2])+graph[i][j]
if j<m-1:
v[i][j][2]=min(v[i-1][j+1][0],v[i-1][j+1][1])+graph[i][j]
v[i][j][1]=min(v[i-1][j][0],v[i-1][j][2])+graph[i][j]
result=v[n-1][0][0]
for i in range(m):
for j in range(3):
result=min(result,v[n-1][i][j])
print(result)
초기값을 101이 아닌 inf로 지정해줬다.
c++이라면 10^9으로 해주면 될듯하다.
'IT > ps' 카테고리의 다른 글
백준 1535번 안녕 (0) | 2025.03.08 |
---|---|
백준 25418번 정수 a를 k로 만들기 (0) | 2025.03.08 |
백준 17212번 달나라 토끼를 위한 구매대금 지불 도우미 (0) | 2025.03.08 |
백준 17175번 피보나치는 지겨웡~ (0) | 2025.03.08 |
백준 14494번 다이나믹이 뭐에요? (0) | 2025.03.08 |