problem solving
2579번: 계단 오르기
Shinuk Yi
2020. 3. 1. 15:05
10번이 넘는 실패를 겪었다.
dp문제는 정말 너무 사악하다.
얼마나 많이 풀어봐야 적응할 수 있을까?...
#include <iostream>
#include <vector>
#include <algorithm>
long long dp[310] = { 0 };
int main(void) {
int len;
std::cin >> len;
std::vector<int> val;
for (int i = 0; i < len; i++) {
int temp;
std::cin >> temp;
val.push_back(temp);
}
//std::reverse(val.begin(), val.end());
if (val.size() > 2) {
dp[0] = val[0];
dp[1] = val[0] + val[1];
dp[2] = val[1] + val[2] > val[0] + val[2] ? val[1] + val[2] : val[0] + val[2];
}
else {
for (int i = 0; i < val.size(); i++) {
dp[val.size() - 1] += val[i];
}
}
for (int i = 3; i < len; i++) {
dp[i] = dp[i - 2] + val[i] > dp[i - 3] + val[i] + val[i - 1] ? dp[i - 2] + val[i] : dp[i - 3] + val[i] + val[i - 1];
}
std::cout << dp[len - 1] << "\n";
return 0;
}
|
cs |