본문 바로가기

프로그래밍

[백준 1149 RGB 거리 ] 파이썬 풀이

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
32
33
34
35
36
# 1149 RGB 거리
# 다이나믹 프로그래밍
#
 
= int(input())
cost = [] # [[R1, G1, B1], [R2, G2, B2], ...]
 
# 집의 가격을 저장한다.
for _ in range(n):
    cost.append(list(map(int, input().split())))
 
 
dp = [cost[0]]   # dp = [[26, 40, 83]]
 
 
for i in range(1, n):
    cost_per_color = []
 
    #  (초록, 파랑)  | 빨강
    # 현재 빨강을 선택했을 때 최소 저장
    temp_red = min(dp[i - 1][1], dp[i - 1][2])
    cost_per_color.append(temp_red + cost[i][0])
 
    #  (빨강, 파랑)  | 초록
    # 현재 초록을 선택했을 때 최소 저장
    temp_green = min(dp[i - 1][0], dp[i - 1][2])
    cost_per_color.append(temp_green + cost[i][1])
 
    #  (빨강, 초록)  | 파랑
    # 현재 초록을 선택했을 때 최소 저장
    temp_blue = min(dp[i - 1][0], dp[i - 1][1])
    cost_per_color.append(temp_blue + cost[i][2])
 
    dp.append(cost_per_color)
 
print(min(dp[n - 1]))