본문 바로가기

Programming [Python]/백준 알고리즘 솔루션

#128 백준 파이썬 [1149] - 점화식

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]))