본문 바로가기

알고리즘

프로그래머스) 정수 삼각형 - lv3

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

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

 

def solution(triangle):
    # 아이디어
    # dp를 이용
    # dp는 triangle의 맨 마지막에서부터 시작 -> bottom-up
    # 2번 반복문을 돌며 d[i-1][j]와 dp[i-1][j-1]을 업데이트
    # 이때 j값을 검증하여 dp업데이트 실행

    dp = [[0] * len(triangle) for _ in range(len(triangle))]
    for i in range(len(triangle[-1])):
        dp[-1][i] = triangle[-1][i]

    for i in range(len(triangle)-1, 0, -1):
        for j in range(len(triangle[i])):
            print(i, j)
            if j < len(triangle[i-1]):
                dp[i-1][j] = max(dp[i][j] + triangle[i-1][j], dp[i-1][j])

            if j != 0:
                dp[i-1][j-1] = max(dp[i][j] + triangle[i-1][j-1], dp[i-1][j-1])

    return dp[0][0]

bottom-up방식으로 풀었다.

전형적인 dp문제이지만 3단계라고 생각하기엔 매우 쉬운 난이도였다.

 

'알고리즘' 카테고리의 다른 글

PG) 야근지수 -lv3  (0) 2024.07.07
PG) 네트워크 - lv3  (0) 2024.07.06
BOJ)괄호 추가하기 3  (0) 2024.06.28
BOJ) MooTube  (0) 2024.06.27
백준) 합분해 - python  (0) 2024.06.25