- 문제 : https://school.programmers.co.kr/learn/courses/30/lessons/43105
- 동적 프로그래밍(DP) 동적 프로그래밍 문제
- 삼각형의 위쪽에서 아래쪽으로 값을 누적하고 아래쪽에서 가장 큰 값을 반환합니다.
def solution(triangle):
answer = 0
for i in range(1, len(triangle)): # 꼭대기에서 한칸 밑 부터 시작
for j in range(len(triangle(i))):
if j == 0: # 가장 왼쪽 값이면 위 칸의 가장 왼쪽 값을 더한다.
triangle(i)(j) += triangle(i-1)(j)
elif j == len(triangle(i)) - 1: # 가장 오른쪽 값이면 위 칸의 가장 오른쪽 값을 더한다.
triangle(i)(j) += triangle(i-1)(j-1)
else: # 중간에 있는 값이면 위에 두 숫자 중 큰걸 더한다.
triangle(i)(j) += max(triangle(i-1)(j-1), triangle(i-1)(j))
answer = max(triangle(-1)) # 마지막 리스트에서 최대값
return answer
![[Leetcode 57] Insert [Leetcode 57] Insert](https://place.best-news.co.kr/wp-content/plugins/contextual-related-posts/default.png)