RGB 거리

박고은·2023년 7월 31일
0

코딩테스트 연습

목록 보기
33/34

문제 ✨

1149번: RGB 거리

RGB거리에는 집이 N개 있다. 거리는 선분으로 나타낼 수 있고, 1번 집부터 N번 집이 순서대로 있다.

집은 빨강, 초록, 파랑 중 하나의 색으로 칠해야 한다. 각각의 집을 빨강, 초록, 파랑으로 칠하는 비용이 주어졌을 때, 아래 규칙을 만족하면서 모든 집을 칠하는 비용의 최솟값을 구해보자.

• 1번 집의 색은 2번 집의 색과 같지 않아야 한다.
• N번 집의 색은 N-1번 집의 색과 같지 않아야 한다.
• i(2 ≤ i ≤ N-1)번 집의 색은 i-1번, i+1번 집의 색과 같지 않아야 한다.

N = int(input())
cost = [list(map(int, input().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][1] += min(cost[i-1][0], cost[i-1][2])
    cost[i][2] += min(cost[i-1][0], cost[i-1][1])
    
print(min(cost[-1]))

다음 색은 이번 색과 같지 않은 두 가지 중 하나
i번째의 빨간색에는 i-1번째의 초록색과 파란색 중 최소 비용을 가진 색과의 합을 저장

0개의 댓글