dp[0]
은 data[0]
으로 초기화한다.dp[i][0] = min(dp[i-1][1], dp[i-1][2]) + data[i][0]
dp[i][1] = min(dp[i-1][0], dp[i-1][2]) + data[i][1]
dp[i][2] = min(dp[i-1][0], dp[i-1][1]) + data[i][2]
다음 점화식을 통해 dp테이블을 갱신하고 min(dp[n-1])
을 통해 모든 집을 칠하는 비용의 최솟값을 출력한다.
n = int(input())
data = []
dp = [[0] * (3) for i in range(n)]
for i in range(n):
data.append(list(map(int, input().split())))
for i in range(3):
dp[0][i] = data[0][i]
for i in range(1, n):
dp[i][0] = min(dp[i-1][1], dp[i-1][2]) + data[i][0]
dp[i][1] = min(dp[i-1][0], dp[i-1][2]) + data[i][1]
dp[i][2] = min(dp[i-1][0], dp[i-1][1]) + data[i][2]
print(min(dp[n-1]))