[백준] RGB거리 2 (17404)

크타·2022년 11월 24일
0

백준

목록 보기
6/11

https://www.acmicpc.net/problem/17404

RGB 거리의 확장 형이다.
달라진게 있다면 마지막 집의 색과 1번 집의 색은 같으면 안되는게 추가 되었다.
많은 고민을 하다가 1번째 집의 색이 R일때 G일때 B일때 경우의 수를 따지기로 했다.

import copy

n = int(input())
graph = [list(map(int, input().split())) for _ in range(n)]
result = []
for a in range(3):
    dp = copy.deepcopy(graph)
    for i in range(3):
        dp[0][i] = dp[0][a]
    dp[1][a] = 1e9
    for idx in range(1, n):
        dp[idx][0] = min(dp[idx - 1][1], dp[idx - 1][2]) + dp[idx][0]
        dp[idx][1] = min(dp[idx - 1][0], dp[idx - 1][2]) + dp[idx][1]
        dp[idx][2] = min(dp[idx - 1][0], dp[idx - 1][1]) + dp[idx][2]

    for i in range(3):
        if a != i: 1번째 집과 마지막 집의 색은 달라야 한다.
            result.append(dp[n - 1][i])
print(min(result))

0개의 댓글