import sys
input = sys.stdin.readline
n = int(input())
tri = []
for _ in range(n):
tri.append(list(map(int,input().split())))
for i in range(1,n):
for j in range(len(tri[i])):
# 처음 각 라인의 처음과 끝 -> 바로 위의 숫자를 더해준다
if j == 0:
tri[i][j] = tri[i][j]+tri[i-1][j]
# 끝
elif j == len(tri[i])-1:
tri[i][j] = tri[i][j]+tri[i-1][j-1]
#나머지는 왼쪽 대각선, 오른쪽 대각선 중 최댓값을 더해나가 계속 누적시켜주면 된다.
else:
tri[i][j] =max(tri[i-1][j-1],tri[i-1][j])+tri[i][j]
print(max(tri[n-1]))
'문제풀이 > 백준(Boj) 문제풀이' 카테고리의 다른 글
[백준][동적 계획법1] 1463 . 1로 만들기(파이썬/Python) (0) | 2021.09.15 |
---|---|
[백준][동적 계획법1] 2579. 계단 오르기(파이썬/Python) (0) | 2021.09.15 |
[백준][동적 계획법1] 1149. RGB거리(파이썬/Python) (0) | 2021.09.13 |
[백준][백트래킹] 14888. 연산자 끼워넣기(파이썬/Python) (0) | 2021.09.12 |
[백준][동적 계획법1] 9461. 파도반 수열 (파이썬/Python) (0) | 2021.09.12 |