정수 삼각형에서 맨 위부터 시작해 아래에 있는 수 중 하나를 선택해서 내려오면서 더할 때 최댓값을 구하는 문제다.
7
3 8
8 1 0
2 7 4 4
4 5 2 6 5
위 그림에선 최댓값이 이 된다.
import sys
read = sys.stdin.readline
n = int(read())
memo = []
for _ in range(n):
memo.append(list(map(int, read().split())))
for i in range(1, n):
for j in range(i + 1):
if j == 0:
memo[i][j] += memo[i-1][j]
elif j == i:
memo[i][j] += memo[i-1][j-1]
else:
memo[i][j] += max(memo[i-1][j-1], memo[i-1][j])
print(max(memo[n-1]))