알고리즘

[백준/DP/C++] 2579번 계단 오르기

데메즈 2022. 12. 30. 21:59
728x90
반응형

https://www.acmicpc.net/problem/2579

2579번: 계단 오르기

계단 오르기 게임은 계단 아래 시작점부터 계단 꼭대기에 위치한 도착점까지 가는 게임이다. <그림 1>과 같이 각각의 계단에는 일정한 점수가 쓰여 있는데 계단을 밟으면 그 계단에 쓰여 있는 점

www.acmicpc.net

한번에 한계단이나 두계단만 오를 수 있고 연속으로 세계단은 오를 수 없기 때문에
n-3계단에서 n-1을 건너 오는 경우(한계단)와 n-2에서 오는 경우(두계단)의 경우가 있을 수 있다

이 중 점수의 최대값을 구하면 된다

#include <bits/stdc++.h>

using namespace std;
int n;
int dp[301] = {0}, a[301] ={0};

int main(void) {
    cin >> n;

    for(int i=1; i<=n; i++){
        cin >> a[i];
        dp[i] = a[i];
    }

    for(int i=2; i<=n; i++){
        int maxnum = max(dp[i-3]+a[i-1], dp[i-2]);
        dp[i] = dp[i] + maxnum;
    }

    cout << dp[n]<< endl;

    return 0;
}
반응형

728x90
반응형