백준 문제/그리디

[백준] 2847번 게임을 만든 동준이

dubu0721 2025. 2. 26. 17:17

문제: 2847번: 게임을 만든 동준이

basic-algo-lecture/workbook/0x11.md at master · encrypted-def/basic-algo-lecture

 

basic-algo-lecture/workbook/0x11.md at master · encrypted-def/basic-algo-lecture

바킹독의 실전 알고리즘 강의 자료. Contribute to encrypted-def/basic-algo-lecture development by creating an account on GitHub.

github.com

 

#include <bits/stdc++.h>

using namespace std;

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

    int n;
    cin >> n;
    vector<int> levels(n);
    for (int i = 0; i < n; i++)
        cin >> levels[i];

    int cnt = 0;
    int last = levels[n - 1];
    for (int j = n - 2; j >= 0; j--) {
        int tmp = levels[j] - last + 1;
        if (tmp > 0) {
            cnt += tmp;
            levels[j] = last - 1;
        }
        last = levels[j];
    }
    cout << cnt;

    return 0;
}

 

그냥 last 변수 만들어놓고 for 로 뒤부터 돌면서 cnt 에 차이 만큼 값을 더해주면 된다.