Problem Solving/Baekjoon

[백준 / BOJ] 2579 계단 오르기

msmn 2021. 3. 15. 22:13
728x90

알고리즘 분류: DP

문제 링크: www.acmicpc.net/problem/2579

 

2579번: 계단 오르기

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

www.acmicpc.net

  • dp[a][b]: "현재 b개의 계단을 연속해서 밟고 마지막 계단이 a일 때 최대합"이라 정의하여 풀었다.
#include <unordered_map>
#include <unordered_set>
#include <algorithm>
#include <iostream>
#include <climits>
#include <cstring>
#include <iomanip>
#include <bitset>
#include <string>
#include <vector>
#include <cmath>
#include <deque>
#include <queue>
#include <stack>
#include <list>
#include <map>
#include <set>

#define ll long long
#define INF 1e9

using namespace std;

//https://www.acmicpc.net/problem/2579 계단 오르기

int main() {
    ios::sync_with_stdio(0);
    cin.tie(0);
    cout.tie(0);

    int n;
    cin >> n;
    int ar[330] = {};
    int dp[330][3] = {};
    for(int i=1; i<=n; i++) cin >> ar[i];
    
    dp[1][1] = ar[1];
    for(int i=2; i<=n; i++) {
        dp[i][1] = max(dp[i-2][1], dp[i-2][2]) + ar[i];
        dp[i][2] = dp[i-1][1] + ar[i];
    }
    cout << max(dp[n][1], dp[n][2]);

    return 0;
}
728x90

'Problem Solving > Baekjoon' 카테고리의 다른 글

[백준 / BOJ] 2798 블랙잭  (0) 2021.03.16
[백준 / BOJ] 1002 터렛  (0) 2021.03.15
[백준 / BOJ] 15650 N과 M(2)  (0) 2021.03.15
[백준 / BOJ] 2630 색종이 만들기  (0) 2021.03.15
[백준 / BOJ] 2108 통계학  (0) 2021.03.15