카테고리 없음
[백준 1149: RGB거리] - C++
에드윈H
2021. 1. 17. 15:49
1149번: RGB거리
첫째 줄에 집의 수 N(2 ≤ N ≤ 1,000)이 주어진다. 둘째 줄부터 N개의 줄에는 각 집을 빨강, 초록, 파랑으로 칠하는 비용이 1번 집부터 한 줄에 하나씩 주어진다. 집을 칠하는 비용은 1,000보다 작거나
www.acmicpc.net
#include <iostream>
#include <algorithm>
using namespace std;
int dp[3][1000];
int rgb[3][1000];
int main() {
int n; //집 갯수
cin >> n;
for (int index = 0; index < n; index++)
{
cin >> rgb[0][index]; //R값
cin >> rgb[1][index]; //G값
cin >> rgb[2][index]; //B값
}
dp[0][0] = rgb[0][0];
dp[1][0] = rgb[1][0];
dp[2][0] = rgb[2][0];
for (int index = 1; index < n; index++)
{
dp[0][index] = min({ dp[1][index - 1],dp[2][index - 1] }) + rgb[0][index]; //현재를 r로 칠할 때
dp[1][index] = min({ dp[0][index - 1],dp[2][index - 1] }) + rgb[1][index]; //현재를 g로 칠할 때
dp[2][index] = min({ dp[1][index - 1],dp[0][index - 1] }) + rgb[2][index]; //현재를 b로 칠할 때
}
cout << min({ dp[0][n - 1],dp[1][n - 1] ,dp[2][n - 1] }) << endl;
return 0;
}