관리 메뉴

민우의 코딩노트

백준 1149번 RGB거리 - C++ 본문

Algorithm/BOJ

백준 1149번 RGB거리 - C++

미미누 2022. 2. 16. 22:32

[문제]

https://www.acmicpc.net/problem/1149

 

1149번: RGB거리

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

www.acmicpc.net

 

[풀이]

다이나믹 프로그래밍(DP)

 

[코드]

#include <bits/stdc++.h>

using namespace std;

int d[1005][3];
int r[1005], g[1005], b[1005];

int main() {
    ios::sync_with_stdio(0);
    cin.tie(0);
    int n;
    cin >> n;
    for(int i=1; i<=n; i++) cin >> r[i] >> g[i] >> b[i];
    d[1][0] = r[1];
    d[1][1] = g[1];
    d[1][2] = b[1];
    
    for(int i=2; i<=n; i++){
        d[i][0] = min(d[i-1][1], d[i-1][2]) + r[i];
        d[i][1] = min(d[i-1][0], d[i-1][2]) + g[i];
        d[i][2] = min(d[i-1][0], d[i-1][1]) + b[i];
    }
    cout << *min_element(d[n], d[n]+3);
}