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