[동적 계획법] 정수 삼각형

2021. 10. 31. 12:14백준

 

1932번: 정수 삼각형

첫째 줄에 삼각형의 크기 n(1 ≤ n ≤ 500)이 주어지고, 둘째 줄부터 n+1번째 줄까지 정수 삼각형이 주어진다.

www.acmicpc.net

저번 문제와 마찬가지로 DP 테이블을 이용해서 쉽게 풀 수 있었다.

 

from sys import stdin

N = int(stdin.readline())

L = []

while True:
    line = list(map(int, stdin.readline().split()))

    if len(L) == 0:
        L.append(line)
    else:
        prev = L[len(L) - 1]
        next_line = []

        for i, v in enumerate(line):
            if i == 0:
                next_line.append(v + prev[0])
            elif i == len(prev):
                next_line.append(v + prev[len(prev) - 1])
            else:
                next_line.append(v + max(prev[i - 1], prev[i]))

        L.append(next_line)

    if len(L) == N:
        break

print(max(L[len(L) - 1]))