2025-03-07 14:30:29

입력 이해하는게 제일 힘들었다.

테스트 케이스는 여러개인데 몇개가 올지를 모른다는 의미였다.

 

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