본문 바로가기

Coding test

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


소스코드

N = int(input())
color = []
for i in range (N):
  color.append(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][1],color[i-1][0])
print(min(color[-1]))

알고리즘

color = [[30, 19, 5],[64, 77, 64],[15, 19, 97],[4,71,57],[90,86,84],[93,32,91]]
[[30, 19, 5], [69, 82, 83], [15, 19, 97], [4, 71, 57], [90, 86, 84], [93, 32, 91]]
[[30, 19, 5], [69, 82, 83], [97, 88, 166], [4, 71, 57], [90, 86, 84], [93, 32, 91]]
[[30, 19, 5], [69, 82, 83], [97, 88, 166], [92, 168, 145], [90, 86, 84], [93, 32, 91]]
[[30, 19, 5], [69, 82, 83], [97, 88, 166], [92, 168, 145], [235, 178, 176], [93, 32, 91]]
[[30, 19, 5], [69, 82, 83], [97, 88, 166], [92, 168, 145], [235, 178, 176], [269, 208, 269]]

 

코드를 실행하면 변화되는 color 의 값이다

각각의 R,G,B는 그 전 color의 값중 최소를 더해나간다.

ex) color[1] = [64,77,64] -> [64+5,77+5,64+19]

이렇게 더해나가다 보면 전의 집과 겹치지 않는 최소의 비용을 얻어나갈 수 있다.