1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
#include <iostream>
#include <vector>
#include <algorithm>
 
using namespace std;
 
int main() {
    int n;
    cin >> n;
 
    vector<int> vec(3000);
    vector<int> cache(3000);
 
    for (int i = 0; i < n; i++) {
        cin >> vec[i];
    }
    
    cache[0= vec[0];
    cache[1= vec[0+ vec[1];
    cache[2= max(vec[0+ vec[2], vec[1+ vec[2]);
    
    for (int i = 3; i < n; i++) {
        //전계단 밟는 경우 전전계단은 밟으면 안됨. 전전전계단 밟아야함
        //전계단 안밟는 경우
        //이 중 최대값
        cache[i] = max(cache[i - 3+ vec[i - 1+ vec[i], cache[i - 2+ vec[i]);
    }
 
    cout << cache[n - 1];
 
    return 0;
}
http://colorscripter.com/info#e" target="_blank" style="color:#e5e5e5text-decoration:none">Colored by Color Scripter
http://colorscripter.com/info#e" target="_blank" style="text-decoration:none;color:white">cs

 

n>=4 이상일때 cache[n] = max(cache[n-3] + vec[n-1] + vec[n], cache[n-2] + vec[n])

계단이 1개일 때, 2개일 때, 3개일 때 ... 손으로 해보면서 점화식을 찾기

 

'Baekjoon' 카테고리의 다른 글

[#10844] 쉬운 계단 수  (0) 2020.03.11
[#1463] 1로 만들기  (0) 2020.03.11
[#1932] 정수 삼각형  (0) 2020.03.11
[#1149] RGB거리  (0) 2020.03.10
[#9461] 파도반 수열  (0) 2020.03.10

+ Recent posts