Coding Test

프로그래머스 - 동적계획법(Dynamic Programming) - 정수 삼각형

Indo Yoon

문제

https://school.programmers.co.kr/learn/courses/30/lessons/43105

정답

가장 좌측과 우측 값은 계속 더해지지만, 가운데 값은 경로상에서 더 큰값만 더하면 된다는 아이디어가 필요한 문제였다.

def solution(triangle):
    pre = triangle[0]
    for step in triangle[1:]:
        for idx, val in enumerate(step):
            if idx == 0:
                step[idx] += pre[idx]
            elif idx == len(step) -1:
                step[idx] += pre[-1]
            else:
                step[idx] += max(pre[idx-1], pre[idx])
        pre = step
        
            
    return max(step)