본문 바로가기

problem solving

1149번: RGB거리

가장 익숙해지지 않는 dp문제

#include <iostream>
#include <vector>
 
int main(void) {
    int len;
    std::cin >> len;
 
    int val[1001][3= { 0 };
    for (int i = 0; i < len; i++) {
        for (int j = 0; j < 3; j++) {
            std::cin >> val[i][j];
        }
    }
 
    int store[3= { 0 };
    int red, green, blue;
    red = val[0][0];
    green = val[0][1];
    blue = val[0][2];
    for (int i = 1; i < len; i++) {
        store[0= val[i -1][0], store[1= val[i - 1][1], store[2= val[i - 1][2];
        val[i][0+= store[1> store[2] ? store[2] : store[1];
        val[i][1+= store[0> store[2] ? store[2] : store[0];
        val[i][2+= store[0> store[1] ? store[1] : store[0];
    }
    red = val[len - 1][0], green = val[len - 1][1], blue = val[len - 1][2];
 
    int result = (red > green ? green : red) > blue ? blue : (red > green ? green : red);
    std::cout << result << "\n";
    return 0;
}
cs

 

'problem solving' 카테고리의 다른 글

1208번: 부분수열의 합2  (0) 2020.02.20
1182번: 부분수열의 합  (0) 2020.02.20
1168번: 요세푸스 문제2  (0) 2020.02.19
1167번: 트리의 지름  (0) 2020.02.19
1021번: 회전하는 큐  (0) 2020.02.19