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