본문 바로가기

Algorithm/BOJ (백준)

[C++] 백준 1149 RGB거리

1149 RGB거리

 

1149번: RGB거리

첫째 줄에 집의 수 N(2 ≤ N ≤ 1,000)이 주어진다. 둘째 줄부터 N개의 줄에는 각 집을 빨강, 초록, 파랑으로 칠하는 비용이 1번 집부터 한 줄에 하나씩 주어진다. 집을 칠하는 비용은 1,000보다 작거나

www.acmicpc.net

C++

#include <iostream>
#include <vector>

using namespace std;

int DP[1003][3] = {0,};
int RGB[1003][3] = {0,};

int main() {
    ios::sync_with_stdio(0);
    cin.tie(0);
    int n;
    cin >> n;

    for (int i = 1; i <= n; i++)
        for (int j = 0; j < 3; j++)
            cin >> RGB[i][j];

    for (int i = 1; i <= n; i++) {
        DP[i][0] = RGB[i][0] + min(DP[i - 1][1], DP[i - 1][2]);
        DP[i][1] = RGB[i][1] + min(DP[i - 1][0], DP[i - 1][2]);
        DP[i][2] = RGB[i][2] + min(DP[i - 1][0], DP[i - 1][1]);
    }
    cout << min(min(DP[n][0], DP[n][1]), DP[n][2]) << '\n';

    return 0;
}