#RGB거리: 빨/초/파 중 하나의 색으로 칠해야 한다. 이웃한 집들과는 색이 달라야 한다. 칠하는 최소 비용 구하기.
n = int(input())
graph = []
for _ in range(n):
graph.append(list(map(int, input().split())))
빨, 초, 파로 각각의 집을 칠하는 가격 순서대로 입력받아서 그래프로 나타내기
dp = []
for _ in range(n):
dp.append([0, 0, 0])
dp[0][0] = graph[0][0]
dp[0][1] = graph[0][1]
dp[0][2] = graph[0][2]
for i in range(1, n):
dp[i][0] = min(dp[i-1][1], dp[i-1][2])+graph[i][0]
dp[i][1] = min(dp[i-1][0], dp[i-1][2])+graph[i][1]
dp[i][2] = min(dp[i-1][0], dp[i-1][1])+graph[i][2]
'''
if dp[i-1][0]+graph[i][1] <= dp[i-1][2]+graph[i][1]:
dp[i][1]= dp[i-1][0]+graph[i][1]
else: dp[i][1] = dp[i-1][2]+graph[i][1]
↑ 이런 형식에서 간단하게 수정함.
'''
print(min(dp[n-1]))
'알고리즘 PS > DP' 카테고리의 다른 글
DP 황금미로 (0) | 2024.06.08 |
---|---|
백준 #11726번 2xn 타일링[파이썬] (0) | 2024.02.01 |
백준 #9095 1, 2, 3 더하기 (1) | 2023.11.09 |
백준 #2839 설탕배달 (1) | 2023.10.02 |
백준 #1463 1로 만들기 (0) | 2023.10.02 |