본문 바로가기
BaekJoon/C++

2579 : 계단 오르기 (C++)

by GrayChoi 2021. 2. 18.
반응형

 

2579번: 계단 오르기

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

www.acmicpc.net


오랜만에 다이내믹 프로구래밍을 풀어보았따...

다른공부도 해야하는데 맨날 백준만 잡고있다니...

#include<iostream>

using namespace std;

int arr[301];
int dp[301];

/*
문제 접근 방법 :
n번째 계단을 밟는 경우는 두가지 방법 밖에없다
1. n번째를 밟고 n-2번째 계단을 밟는 경우
2. n번째를 밟고, n-1번째와 n-3번째를 밟는 경우
문제에 나온 예로 6번째 계단을 밟는 경우에는
4번째 계단을 밟는 경우와 5, 3번째 계단을 밟는 경우로 나눌 수 있고
각각 또 4번째 계단을 밟는 경우는 2번째 계단을 밟는 경우와
3, 1번째 계단을 밟는 경우로 나눌 수 있으며
5, 3번째 계단을 밟는 경우는 1번째 계단을 밟는 경우 또는
2번째 계단을 밟는 경우로 나눌 수 있다.
*/

int main() {
    int N;
    cin >> N;

    for(int i = 1; i <= N; i++) {
        cin >> arr[i];
    }

    dp[1] = arr[1];
    dp[2] = arr[1] + arr[2];
    dp[3] = max(arr[1] + arr[3], arr[2] + arr[3]);

    for(int i = 4; i <= N; i++) {
        dp[i] = max(dp[i - 2] + arr[i], dp[i - 3] + arr[i - 1] + arr[i]);
    }

    cout << dp[N] << "\n";

    return 0;
}
반응형

'BaekJoon > C++' 카테고리의 다른 글

13305 : 주유소 (C++)  (0) 2021.02.19
2573 : 빙산 (C++)  (0) 2021.02.18
20551 : Sort 마스터 배지훈의 후계자 (C++)  (0) 2021.02.18
7562 : 나이트의 이동 (C++)  (0) 2021.02.17
1966 : 프린터 큐 (C++)  (0) 2021.02.17

댓글