유형 : DP

난이도 쉬움. 

풀이 시간 : 15분

 

def solution(triangle):
    answer = 0
    solution = [[0] * i for i in range(1, len(triangle[len(triangle)-1])+1)]
    solution[0][0] = triangle[0][0]
    
    for i in range(1, len(triangle)):
        for j in range(len(triangle[i])):
            if j == 0:
                solution[i][j] = solution[i-1][j] + triangle[i][j]
            elif j == len(triangle[i])-1:
                solution[i][j] = solution[i-1][j-1] + triangle[i][j]
            else:
                solution[i][j] = max(solution[i-1][j], solution[i-1][j-1]) + triangle[i][j]
    return max(solution[len(solution)-1])

 

경로 저장도 필요 없는 문제였다.

경로 저장 없이 그냥 

 

<양 구석의 경우>

j = 0인 경우 : solution[i-1][j] + triangle[i][j]

j = len() -1 인 경우 : solution[i-1][j-1] + triangle[i][j]

아닌 경우에는 max(solution[i-1][j], solution[i-1][j-1]) + triangle[i][j] 

 

을 구해 마지막 줄 값의 최댓값을 return하면 되는 문제였다. 

'프로그래머스 > Lv. 3' 카테고리의 다른 글

4. 여행경로 ★★  (0) 2024.07.19
3. 단어 변환 (BFS)  (0) 2024.07.19
2. 네트워크  (0) 2024.07.19
1. 베스트앨범 (해시 테이블) ★ (이차원 함수의 정렬)  (0) 2024.07.17
복사했습니다!