Notice
Recent Posts
Recent Comments
Link
«   2025/05   »
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31
Archives
Today
Total
관리 메뉴

해야만 한다

[Python] 1149. RGB거리 본문

Python/Algorithm

[Python] 1149. RGB거리

쥬링999 2023. 10. 14. 12:21

 

풀이

DP를 n*3의 2차원 형태로 만들어서 각 행의 RGB 비용을 모두 저장해둔다.

DP[i] = [R비용,G비용,B비용] 이런식으로 갱신할 것이다.

DP의 뼈대를 만들었다면 2중 for문을 통해 DP[i][j]에다가 i행의 특정 색상 비용 + i-1행의 나머지 색상 비용 중 작은 값을 더한 값을 넣는다.

현재 빨간색을 택했다면 이전의 파랑, 초록색 중 작은 값을 선택하고 더해서 넣는 셈

 

코드

import sys
input = sys.stdin.readline
n = int(input())
h = [list(map(int, input().split())) for _ in range(n)]
dp = [[0] * 3 for _ in range(n)]

for i in range(n):
    for j in range(3):
        if j == 0:
            dp[i][j] = h[i][j] + min(dp[i-1][1],dp[i-1][2])
        elif j == 1:
            dp[i][j] = h[i][j] + min(dp[i-1][0],dp[i-1][2])
        elif j == 2:
            dp[i][j] = h[i][j] + min(dp[i-1][0],dp[i-1][1])
print(min(dp[n-1]))

 

'Python > Algorithm' 카테고리의 다른 글

[Python] 백준 1446. 지름길  (0) 2023.10.14
[Python] 백준 25511. 값이 k인 트리 노드의 깊이  (0) 2023.10.14
[Python] 23291. 어항 정리  (0) 2023.10.10
[Python] 14500. 테트로미노  (0) 2023.10.10
[Python] 4179. 불!  (0) 2023.10.10