본문 바로가기

[BOJ] - Python

[백준] 1149 : RGB거리 python

 

전체 비용이 최소가 되기 위해서 마지막집이 R일 때, G일 때, B일 때 모두를 계산하고

그중 최소인 것을 출력한다.

 

이때 i번째 집은 i-1번째 집과 다른 색이어야 한다는 조건이 있기 때문에

i번째 집이 R인 경우에는 i-1번째 집이 G거나 B여야 하고

i번째 집이 G인 경우에는 i-1번째 집이 R이거나 B여야 하고

i번째 집이 B인 경우에는 i-1번째 집이 R이거나 G여야 한다.

 

n = int(input())
color = [0]*(n)
for i in range(n):
    color[i] = list(map(int,input().split()))

for i in range(1,n):
    color[i][0] += min(color[i-1][1],color[i-1][2])
    color[i][1] += min(color[i-1][0],color[i-1][2])
    color[i][2] += min(color[i-1][0],color[i-1][1])

print(min(color[n-1][0],color[n-1][1],color[n-1][2]))