파이썬 알고리즘 문제 풀이

[백준] S1. boj1149번 RGB 거리 / 분류 : 다이나믹 프로그래밍

gogi masidda 2024. 4. 1. 19:29

https://www.acmicpc.net/problem/1149

import sys
input = sys.stdin.readline

N = int(input())
costs = []
for i in range(N):
    costs.append(list(map(int, input().split())))

for i in range(1, N):
    costs[i][0] = min(costs[i-1][1], costs[i-1][2]) + costs[i][0]
    costs[i][1] = min(costs[i-1][0], costs[i-1][2]) + costs[i][1]
    costs[i][2] = min(costs[i-1][0], costs[i-1][1]) + costs[i][2]

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

N개의 집을 칠하는 방법의 최소 비용을 구하는 것이다.

그래서 2번째 집부터 첫번째 집의 비용에 더하가면 되니까 for문을 1부터 수행한 것이다.

i번째 집의 0번째 색을 칠하는 비용은 i-1번째의 1번째, 2번째 색을 칠하는 비용에 원래 i번째 집의 0번째 색을 칠하는 비용을 더해가면 된다.

이렇게 계속 수행하면 된다.

728x90