읽기 전
- 불필요한 코드나 잘못 작성된 내용에 대한 지적은 언제나 환영합니다.
- 개인적으로 배운 점을 정리한 글입니다.
문제 링크
문제 풀이
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 |