[백준] 1149번 파이썬

Heejun Kim·2022년 6월 8일
0

Coding Test

목록 보기
33/51

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

문제 해결 방법

  1. 문제의 조건을 먼저 확인한다.
  2. 순서대로 탐색한다 했을 때, 현재 내 집의 색은 이전 집의 색깔과 다르면서 비용이 최소화 되야 한다.
  3. 따라서 현재 내 집의 색깔이 R일 때, 이전 집의 G, B일 경우 중 값이 제일 적은 색상을 선택해 비용을 계산하고 그 비용을 현재 내 집에 선택한 색상 위치에 넣어준다.
  4. 이를 반복하면 결국 최종적으로 마지막 집에는 모든 경우의 수의 최솟값이 들어가 있다.
  5. 그 값의 최솟값을 출력하면 된다.
import sys
input = sys.stdin.readline

N = int(input())
RGB = [list(map(int, input().split())) for _ in range(N)]

# 집의 개수는 무조건 2개 이상이다.
for i in range(1, N):
    RGB[i][0] = min(RGB[i-1][1], RGB[i-1][2]) + RGB[i][0]
    RGB[i][1] = min(RGB[i-1][0], RGB[i-1][2]) + RGB[i][1]
    RGB[i][2] = min(RGB[i-1][0], RGB[i-1][1]) + RGB[i][2]

# 정답 출력
print(min(RGB[-1]))

0개의 댓글