https://www.acmicpc.net/problem/1149
#Solution
다이나믹 프로그래밍을 활용해 n-1까지의 RGB 최솟값을 구해준다. 그 뒤 n번째 집을 합했을 때의 최솟값을 구하면된다. n-1과 n만 필요한 점화식이다.
house = int(input())
result = [[0, 0, 0] for _ in range(house)]
R_list = [0 for _ in range(house)]
G_list = [0 for _ in range(house)]
B_list = [0 for _ in range(house)]
for i in range(house):
R, G, B = map(int, input().split())))
R_list[i] = R
G_list[i] = G
B_list[i] = B
for i in range(house):
if i == 0:
result[i][0] = R_list[i]
result[i][1] = G_list[i]
result[i][2] = B_list[i]
else:
result[i][0] = min(result[i-1][1], result[i-1][2]) + R_list[i]
result[i][1] = min(result[i-1][2], result[i-1][0]) + G_list[i]
result[i][2] = min(result[i-1][0], result[i-1][1]) + B_list[i]
print(min(result[-1]))
'Programming [Python] > 백준 알고리즘 솔루션' 카테고리의 다른 글
#130 백준 파이썬 [2579] 계단 오르기 - 점화식 (0) | 2019.10.04 |
---|---|
#129 백준 파이썬 [2293] 동전 1 - 점화식 (0) | 2019.10.02 |
#127 백준 파이썬 [9461] 파도반 수열 - 점화식 (0) | 2019.10.01 |
#126 백준 파이썬 [1912] 연속합 (1) | 2019.10.01 |
#125 백준 파이썬 [1463] 1로 만들기 - 점화식 (0) | 2019.10.01 |