728x90
반응형
<문제>
https://programmers.co.kr/learn/courses/30/lessons/43105?language=python3
<소스코드>
def solution(triangle):
for i in range(1, len(triangle)):
for j in range(i+1):
if j == 0:
triangle[i][j] += triangle[i-1][0]
elif i == j:
triangle[i][j] += triangle[i-1][-1]
else:
triangle[i][j] += max(triangle[i-1][j-1], triangle[i-1][j])
answer = max(triangle[-1])
return answer
<NOTE>
- 위에서부터 차례대로 maximum으로 만들어 값을 바꾸면서 채운 후, 최종 값을 비교하여 가장 큰 값을 return한다. (작은 문제 해결함으로써 → 큰 문제 해결)
- 가장 왼쪽에 위치한 값은 윗 줄의 가장 왼쪽에 위치한 값만을 더할 수 있고, 가장 오른쪽에 위치한 값은 윗 줄의 가장 오른쪽에 위치한 값만을 더할 수 있다. 그 외의 중간에 있는 값들은 윗 줄의 왼쪽과 오른쪽 중 최댓값과 더하면 된다.
728x90
반응형
'알고리즘 > DP' 카테고리의 다른 글
#30 [파이썬] 프로그래머스: N으로 표현 (0) | 2022.01.17 |
---|---|
[알고리즘] 다이나믹 프로그래밍이란? (0) | 2022.01.16 |
#28 [파이썬] 백준 2579번: 계단 오르기 (0) | 2021.07.01 |
#26 [파이썬] 백준 12865번: 평범한 배낭 (0) | 2021.06.29 |
댓글