백준 17404 - RGB거리 2 (Python)
Updated:
색마다 가장 최솟값을 골라 더해주면 됩니다.
핵심 코드
for j in range(1, n):
dp[j][0] = a[j][0] + min(dp[j - 1][1], dp[j - 1][2])
dp[j][1] = a[j][1] + min(dp[j - 1][0], dp[j - 1][2])
dp[j][2] = a[j][2] + min(dp[j - 1][1], dp[j - 1][0])
전체 코드
import sys
input = sys.stdin.readline
n = int(input())
a = [list(map(int, input().split())) for _ in range(n)]
INF = float('inf')
answer = INF
for i in range(3):
dp = [[INF, INF, INF] for _ in range(n)]
dp[0][i] = a[0][i]
for j in range(1, n):
dp[j][0] = a[j][0] + min(dp[j - 1][1], dp[j - 1][2])
dp[j][1] = a[j][1] + min(dp[j - 1][0], dp[j - 1][2])
dp[j][2] = a[j][2] + min(dp[j - 1][1], dp[j - 1][0])
for j in range(3):
if i != j:
answer = min(answer, dp[-1][j])
print(answer)