[Silver I] Title: RGB거리, Time: 52 ms, Memory: 33432 KB -BaekjoonHub
This commit is contained in:
36
백준/Silver/1149. RGB거리/README.md
Normal file
36
백준/Silver/1149. RGB거리/README.md
Normal file
@@ -0,0 +1,36 @@
|
||||
# [Silver I] RGB거리 - 1149
|
||||
|
||||
[문제 링크](https://www.acmicpc.net/problem/1149)
|
||||
|
||||
### 성능 요약
|
||||
|
||||
메모리: 33432 KB, 시간: 52 ms
|
||||
|
||||
### 분류
|
||||
|
||||
다이나믹 프로그래밍
|
||||
|
||||
### 제출 일자
|
||||
|
||||
2025년 3월 4일 21:16:47
|
||||
|
||||
### 문제 설명
|
||||
|
||||
<p>RGB거리에는 집이 N개 있다. 거리는 선분으로 나타낼 수 있고, 1번 집부터 N번 집이 순서대로 있다.</p>
|
||||
|
||||
<p>집은 빨강, 초록, 파랑 중 하나의 색으로 칠해야 한다. 각각의 집을 빨강, 초록, 파랑으로 칠하는 비용이 주어졌을 때, 아래 규칙을 만족하면서 모든 집을 칠하는 비용의 최솟값을 구해보자.</p>
|
||||
|
||||
<ul>
|
||||
<li>1번 집의 색은 2번 집의 색과 같지 않아야 한다.</li>
|
||||
<li>N번 집의 색은 N-1번 집의 색과 같지 않아야 한다.</li>
|
||||
<li>i(2 ≤ i ≤ N-1)번 집의 색은 i-1번, i+1번 집의 색과 같지 않아야 한다.</li>
|
||||
</ul>
|
||||
|
||||
### 입력
|
||||
|
||||
<p>첫째 줄에 집의 수 N(2 ≤ N ≤ 1,000)이 주어진다. 둘째 줄부터 N개의 줄에는 각 집을 빨강, 초록, 파랑으로 칠하는 비용이 1번 집부터 한 줄에 하나씩 주어진다. 집을 칠하는 비용은 1,000보다 작거나 같은 자연수이다.</p>
|
||||
|
||||
### 출력
|
||||
|
||||
<p>첫째 줄에 모든 집을 칠하는 비용의 최솟값을 출력한다.</p>
|
||||
|
||||
21
백준/Silver/1149. RGB거리/RGB거리.py
Normal file
21
백준/Silver/1149. RGB거리/RGB거리.py
Normal file
@@ -0,0 +1,21 @@
|
||||
import sys
|
||||
|
||||
input = sys.stdin.readline
|
||||
|
||||
N = int(input())
|
||||
|
||||
a = []
|
||||
for i in range(N):
|
||||
a.append(list(map(int, input().split())))
|
||||
|
||||
DP_table = [[0 for _ in range(3)] for _ in range(N+1)]
|
||||
|
||||
DP_table[0][0] = a[0][0]
|
||||
DP_table[0][1] = a[0][1]
|
||||
DP_table[0][2] = a[0][2]
|
||||
|
||||
for i in range(1, N):
|
||||
for j in range(3):
|
||||
DP_table[i][j] = min(DP_table[i-1][(j+1)%3], DP_table[i-1][(j+2)%3]) + a[i][j]
|
||||
|
||||
print(min(DP_table[N-1][0],DP_table[N-1][1],DP_table[N-1][2]))
|
||||
Reference in New Issue
Block a user