기록하는 습관

[백준] DP - RGB 거리 본문

알고리즘/[문제풀이] 백준

[백준] DP - RGB 거리

로그뉴 2020. 10. 3. 19:32

www.acmicpc.net/problem/1149

 

1149번: RGB거리

첫째 줄에 집의 수 N(2 ≤ N ≤ 1,000)이 주어진다. 둘째 줄부터 N개의 줄에는 각 집을 빨강, 초록, 파랑으로 칠하는 비용이 1번 집부터 한 줄에 하나씩 주어진다. 집을 칠하는 비용은 1,000보다 작거나

www.acmicpc.net

i+1번째 집은 i번째 집에 칠한 컬러를 제외한 나머지 색을 칠했을 때의 최소 비용을 생각하며 점화식을 세운다.

import sys

N = int(sys.stdin.readline())
rgb = []
d = [[0] * 3 for _ in range(N)]

for i in range(N):
    tmp = list(map(int, sys.stdin.readline().split()))
    rgb.append(tmp)

d[0][0] = rgb[0][0]
d[0][1] = rgb[0][1]
d[0][2] = rgb[0][2]

for k in range(1, N):
    d[k][0] = min(d[k - 1][1], d[k - 1][2]) + rgb[k][0]
    d[k][1] = min(d[k - 1][0], d[k - 1][2]) + rgb[k][1]
    d[k][2] = min(d[k - 1][0], d[k - 1][1]) + rgb[k][2]

print(min(d[N - 1][0], d[N - 1][1], d[N - 1][2]))

 

'알고리즘 > [문제풀이] 백준' 카테고리의 다른 글

[백준] DP - 동전1  (0) 2020.10.04
[백준] DP - 연속합  (0) 2020.10.03
[백준] DP - 계단 오르기  (0) 2020.10.03
[백준] DP - 1로 만들기  (0) 2020.10.03
[문제풀이] 경쟁적 전염  (0) 2020.08.22
Comments