본문 바로가기
백준

RGB거리 - 1149번

by 청원뿔세포 2022. 9. 29.

다이나믹프로그래밍으로 문제를 풀면 된다.

각 단계별로 전체 색에대한 최소값을 구하려다 실패하였다.

 

각 단계별로, 각 색에대해 최소값을 구한 뒤, 마지막에 최소값을 구해주면 문제를 해결할 수 있다.

 

예제

3

26    40    83

49    60    57

13    89    99

 

->

26    40    83

89    86    83

96    172  185

최소값 : 96

 

 

import sys
n = int(sys.stdin.readline())
house = [[] for i in range(n+1)]

for i in range(n):
    house[i+1] = list(map(int, sys.stdin.readline().split()))
cost = house.copy()
for i in range(2,n+1):
    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][1],cost[i-1][0])
print(min(cost[n]))

'백준' 카테고리의 다른 글

팰린드롬수 - 1259번  (0) 2022.09.30
RGB거리 2 - 17404번  (0) 2022.09.29
바이러스 - 2606번  (0) 2022.09.28
골드바흐의 추측 - 9020번  (0) 2022.09.27
알고리즘 수업 - 깊이 우선 탐색 2 - 24480번  (0) 2022.09.26

댓글