문제 설명


풀이 과정


1. dp를 활용하여야 효율성에서 통과 가능(탐색 X)

 

2. 현재 시점에서 이동 가능한 케이스가 두가지 있음. [i][j] -> [i+1][j], [i][j+1]

 

3. 따라서 맨 위에서 아래로 이동하면서 열 별로 현재 시점에서 이동 가능한 케이스 두가지를 이동하면서 누적합을 최댓값으로 계속 갱신해주는 방식으로 구현

 


import copy

def solution(triangle):
    answer = 0
    dp = copy.deepcopy(triangle)
    for i in range(len(triangle)-1):
        for j in range(len(triangle[i])):
            dp[i+1][j] = max(dp[i+1][j], dp[i][j] + triangle[i+1][j])
            dp[i+1][j+1] = max(dp[i+1][j+1], dp[i][j] + triangle[i+1][j+1])
    
    answer = max(dp[len(triangle)-1])
    
    return answer

'알고리즘[Python] > 프로그래머스' 카테고리의 다른 글

[ Lv 3 ] 2 x n 타일링  (0) 2021.07.15
[ Lv 3 ] 등굣길  (0) 2021.07.15
[ Lv 3 ] 순위  (0) 2021.07.14
[ Lv 3 ] 단어 변환  (0) 2021.07.13
[ Lv 3 ] 디스크 컨트롤러  (0) 2021.07.13

+ Recent posts