problem solving

1149번: RGB거리

Shinuk Yi 2020. 2. 19. 12:37

가장 익숙해지지 않는 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