ps | |
---|---|
링크 | programmers.co.kr/… |
출처 | 프로그래머스 |
문제 번호 | 43105 |
문제명 | 정수 삼각형 |
레벨 | Level 3 |
분류 |
동적 계획법 |
시간복잡도 | O(n^2) |
인풋사이즈 | n<=500 |
사용한 언어 | Python |
해결날짜 | 2021/06/25 |
태그 |
"""Solution code for "Programmers 43105. 정수 삼각형".
- Problem link: https://programmers.co.kr/learn/courses/30/lessons/43105
- Solution link: http://www.teferi.net/ps/problems/programmers/43105
"""
def solution(triangle):
dp_cur = []
for i, triangle_row in enumerate(triangle):
dp_cur, dp_prev = [], dp_cur
for j, num in enumerate(triangle_row):
if j == 0:
dp_cur.append(dp_prev[j] + num)
elif j < i - 1:
dp_cur.append(max(dp_prev[j - 1], dp_prev[j]) + num)
else:
dp_cur.append(dp_prev[j - 1] + num)
return max(dp_cur)
"""Solution code for "Programmers 43105. 정수 삼각형".
- Problem link: https://programmers.co.kr/learn/courses/30/lessons/43105
- Solution link: http://www.teferi.net/ps/problems/programmers/43105
"""
def solution(triangle):
dp_cur = [0] * (len(triangle) + 1)
for triangle_row in reversed(triangle):
dp_prev = dp_cur
dp_cur = [cur + max(sum_left, sum_right)
for cur, sum_left, sum_right
in zip(triangle_row, dp_prev, dp_prev[1:])]
return dp_cur[0]