백준(1149) - RGB거리 Python

최대 1 분 소요

백준(1149) - RGB거리

문제풀이: DP, 파이썬

해결방법

예시)

3
26 40 83
49 60 57
13 89 99
  • 한줄 씩 입력된 값을 확인하면서 채워가면 된다.
  • image
    • 빨간색 공간에는 40과 83중 작은 값이 들어갈 수 있다.
    • 초록색 공간에는 26과 83중 작은 값이 들어갈 수 있다.
    • 파란색 공간에는 26과 40중 작은 값이 들어갈 수 있다.
  • 위와 같은 방식으로 채워나가서 마지막 행의 최소값을 출력하면 최솟값이 된다.
import sys
input = sys.stdin.readline

n = int(input())

houses = []
for i in range(n):
    home = list(map(int, input().split()))
    houses.append(home)

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

print(min(houses[n-1][0], houses[n-1][1], houses[n-1][2]))

댓글남기기