읽기 전

  • 불필요한 코드나 잘못 작성된 내용에 대한 지적은 언제나 환영합니다.
  • 개인적으로 배운 점을 정리한 글입니다.

문제 링크

문제 1149.RGB 거리

문제 풀이

n번째 집에 칠해질 색의 경우의 수는 세 가지로 각 색이 칠해졌을 경우의 비용을 계산하면서 이후 문제를 해결해야 한다.

n번째 집에 R을 칠하려면 n - 1번째 집에 G나 B가 칠해졌을 경우이고 G를 칠하려면 R이나 B를, B를 칠하려면 R이나 G를 칠한 상태여야 한다. 각 경우에 대해 산출하고 그 최솟값을 각각 n 번째 집에 R, G, B를 칠한 경우에 해당하는 변수로 저장하여 다음 문제로 진행한다.

  • 초기값 R, G, B는 1번째 집의 r, g, b 값이다.
  • 이후 R은 min(G + r, B + r)이고 G는 min(R + g, B + g)이며 B는 min(R + b, G + b)이다.
  • N번째 집까지 모두 완료하면 세가지 경우 중 최솟값을 출력한다.

python 코드

import sys

input = sys.stdin.readline

N = int(input())
R, G, B = map(int, input().split())
for _ in range(2, N + 1):
    r, g, b = map(int, input().split())
    R, G, B = min(G + r, B + r), min(R + g, B + g), min(R + b, G + b)
print(min(R, G, B))

'Algorithms > Baekjoon' 카테고리의 다른 글

BOJ #2156 포도주 시식  (0) 2021.07.26
BOJ #1463 1로 만들기  (0) 2021.07.26
BOJ #3020 개똥벌레  (0) 2021.07.19
BOJ #2143 두 배열의 합  (0) 2021.07.17
BOJ #12015 가장 긴 증가하는 부분 수열 2  (0) 2021.07.15

+ Recent posts