입력 이해하는게 제일 힘들었다.
테스트 케이스는 여러개인데 몇개가 올지를 모른다는 의미였다.
import sys
t=1
while True:
n=int(sys.stdin.readline().rstrip())
if n==0:
break
graph=[]
for i in range(n):
graph.append(list(map(int,sys.stdin.readline().rstrip().split())))
v=[[0]*3 for _ in range(n)]
v[0][0]=graph[0][1]
v[0][1]=graph[0][1]
v[0][2]=graph[0][1]
for i in range(1,n):
v[i][0]=min(v[i-1][0],v[i-1][1])+graph[i][0]
v[i][1]=min(v[i][0],v[i-1][0],v[i-1][1],v[i-1][2])+graph[i][1]
v[i][2]=min(v[i][1],v[i-1][1],v[i-1][2])+graph[i][2]
print(f"{t}. {v[n-1][1]}")
t+=1
import sys
t=1
while True:
n=int(sys.stdin.readline().rstrip())
if n==0:
break
graph=[]
for i in range(n):
graph.append(list(map(int,sys.stdin.readline().rstrip().split())))
v=[[0]*3 for _ in range(n)]
v[0][0]=graph[0][1]
v[0][1]=graph[0][1]
v[0][2]=graph[0][1]+graph[0][2]
for i in range(1,n):
v[i][0]=min(v[i-1][0],v[i-1][1])+graph[i][0]
v[i][1]=min(v[i][0],v[i-1][0],v[i-1][1],v[i-1][2])+graph[i][1]
v[i][2]=min(v[i][1],v[i-1][1],v[i-1][2])+graph[i][2]
print(f"{t}. {v[n-1][1]}")
t+=1
결국 아래로 가는 방법은 무조건 중앙을 거쳐가야하니까 첫줄을 전부 가운데 값으로 변경을 시켰는데 왼쪽에서 가는 경우는 없으니까 상관없는데 오른쪽을 거쳐서 가는 경우 문제가 발생했던것 같다.
'IT > ps' 카테고리의 다른 글
백준 9084번 동전 (0) | 2025.03.07 |
---|---|
백준 9251번 LCS (0) | 2025.03.07 |
백준 2240번 자두나무 (0) | 2025.03.04 |
백준 1890번 점프 (0) | 2025.03.04 |
백준 25957번 단어 우월 효과 (0) | 2025.03.02 |