사용 언어 : python
cost
는 각 집의 빨강, 초록, 파랑으로 칠하는 비용이 들어가있다.
i번 집의 색은 i-1번, i+1번 집의 색과 달라야 하므로 for을 사용하여
i에서 빨강색을 선택했으면 i-1번 집에서 빨강이 아닌 색 중 최솟값을 더하여 cost[i][0]
에 저장한다.
i에서 초록을 선택하였을 때 역시 마찬가지로 i-1번 집에서 초록이 아닌 색 중 최소값을 더하여 cost[i][1]
에 저장한다.
i에서 파랑을 선택하였을 경우는 최소비용은 cost[i][2]
에 저장이 된다.
결국 cost[i]
에는
[ i번째에 빨강색일 경우 최소 비용 , 초록색일 경우 최소 비용 , 파랑색일 경우 최소 비용 ] 이 저장된다.
예시)
입력 :
3
26 40 83
49 60 57
13 89 99
cost 출력 :
[[26, 40, 83], [89, 86, 83], [96, 172, 185]]
최종적으로 cost[n-1]
값 중 가장 작은 값을 출력하면 된다.
import sys
n = int(sys.stdin.readline())
cost = [list(map(int, sys.stdin.readline().split())) for _ in range(n)]
for i in range(1, n):
cost[i][0] = min(cost[i-1][1], cost[i-1][2]) + cost[i][0]
cost[i][1] = min(cost[i-1][0], cost[i-1][2]) + cost[i][1]
cost[i][2] = min(cost[i-1][0], cost[i-1][1]) + cost[i][2]
print(min(cost[n-1]))