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 거리
# 다이나믹 프로그래밍
#
n = 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]))
|
'프로그래밍' 카테고리의 다른 글
벽 부수고 이동하기[파이썬, JAVA, C++] (0) | 2020.03.30 |
---|---|
Permutation [Python, Java, C++] (0) | 2020.03.28 |
[백준 1697 숨바꼭질 ] 파이썬 (0) | 2020.02.27 |
[백준 2468 안전 영역] 파이썬 풀이 (0) | 2020.02.27 |
[백준 2644 촌수 계산] 파이썬 (0) | 2020.02.26 |