백준알고리즘

RGB거리

먼지의삶 2019. 7. 13. 18:50
#include<cstdio>

using namespace std;


int n;
unsigned long long a[1001][4];

unsigned long long d[1001][4];

unsigned long long min(unsigned long long a, unsigned long long b){
    unsigned long long min = a;
    if(min > b){
        min = b;

    }
    return min;
}
int main(){
    scanf("%d", &n);

    for(int i = 1; i <= n; i++){
        for(int j = 1; j <= 3; j++){
            scanf("%d", &a[i][j]);
        }
    }

    d[1][1] = a[1][1]; d[1][2] = a[1][2]; d[1][3] = a[1][3];

    for(int i = 2; i <= n; i++){
        d[i][1] =min(d[i-1][2], d[i-1][3]) + a[i][1];
        d[i][2] = min(d[i-1][3], d[i-1][1]) + a[i][2];
        d[i][3] = min(d[i-1][1], d[i-1][2]) + a[i][3];
    }
    unsigned long long max = d[n][1];
    for(int i = 2; i <= 3; i++){
        if(max > d[n][i])
            max = d[n][i];
    }
    printf("%lld\n", max);

    return 0;

}

DP 기본 예제 같은느낌 오래걸리지 않고 노트에써서 풀이 하기전에 머릿속으로 풀수있었음