[ ALGORITHM ]/[ 백 준 ]
[BAEKJOON] 17404번 : RGB 거리 2
HiStar__
2020. 9. 19. 09:34
문 제
소 스 코 드
#include <iostream>
#include <algorithm>
constexpr int MAX{ 1'000'001 };
int dp[1001][3];
int RGB[1001][3];
int main() {
int N;
std::cin >> N;
for (int i = 0; i < N; ++i) {
for (int j = 0; j < 3; ++j) {
std::cin >> RGB[i][j];
}
}
int answer{ MAX };
// 첫 번째 집의 색
for (int i = 0; i < 3; ++i) {
// 선택된 집의 색상 고정
for (int j = 0; j < 3; ++j) {
if (j == i) dp[0][j] = RGB[0][j];
else dp[0][j] = MAX;
}
for (int j = 1; j < N; ++j) {
// j - 1번째 집까지 색을 칠하는 최솟값 + j번째 집을 R으로 칠하는 비용
dp[j][0] = std::min(dp[j - 1][1], dp[j - 1][2]) + RGB[j][0];
// j - 1번째 집까지 색을 칠하는 최솟값 + j번째 집을 G으로 칠하는 비용
dp[j][1] = std::min(dp[j - 1][0], dp[j - 1][2]) + RGB[j][1];
// j - 1번째 집까지 색을 칠하는 최솟값 + j번째 집을 B으로 칠하는 비용
dp[j][2] = std::min(dp[j - 1][0], dp[j - 1][1]) + RGB[j][2];
}
for (int j = 0; j < 3; ++j) {
if (i == j) continue;
answer = std::min(answer, dp[N - 1][j]);
}
}
std::cout << answer << '\n';
return 0;
}
풀 이
출 력 값
문 제 출 처
문제 링크 : www.acmicpc.net/problem/17404
17404번: RGB거리 2
첫째 줄에 집의 수 N(2 ≤ N ≤ 1,000)이 주어진다. 둘째 줄부터 N개의 줄에는 각 집을 빨강, 초록, 파랑으로 칠하는 비용이 1번 집부터 한 줄에 하나씩 주어진다. 집을 칠하는 비용은 1,000보다 작거나
www.acmicpc.net