๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
๐Ÿ“ ์•Œ๊ณ ๋ฆฌ์ฆ˜/BOJ

[C++/BOJ] 1417 : ๊ตญํšŒ์˜์› ์„ ๊ฑฐ (์ž๋ฃŒ๊ตฌ์กฐ)

by xxilliant 2023. 5. 6.
728x90
๋ฐ˜์‘ํ˜•

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

๋ฌธ์ œ

๋‹ค์†œ์ด๋Š” ์‚ฌ๋žŒ์˜ ๋งˆ์Œ์„ ์ฝ์„ ์ˆ˜ ์žˆ๋Š” ๊ธฐ๊ณ„๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค. ๋‹ค์†œ์ด๋Š” ์ด ๊ธฐ๊ณ„๋ฅผ ์ด์šฉํ•ด์„œ 2008๋…„ 4์›” 9์ผ ๊ตญํšŒ์˜์› ์„ ๊ฑฐ๋ฅผ ์กฐ์ž‘ํ•˜๋ ค๊ณ  ํ•œ๋‹ค.

๋‹ค์†œ์ด์˜ ๊ธฐ๊ณ„๋Š” ๊ฐ ์‚ฌ๋žŒ๋“ค์ด ๋ˆ„๊ตฌ๋ฅผ ์ฐ์„ ์ง€ ๋ฏธ๋ฆฌ ์ฝ์„ ์ˆ˜ ์žˆ๋‹ค. ์–ด๋–ค ์‚ฌ๋žŒ์ด ๋ˆ„๊ตฌ๋ฅผ ์ฐ์„ ์ง€ ์ •ํ–ˆ์œผ๋ฉด, ๋ฐ˜๋“œ์‹œ ์„ ๊ฑฐ๋•Œ ๊ทธ ์‚ฌ๋žŒ์„ ์ฐ๋Š”๋‹ค.

ํ˜„์žฌ ํ˜•ํƒ๊ตฌ์— ๋‚˜์˜จ ๊ตญํšŒ์˜์› ํ›„๋ณด๋Š” N๋ช…์ด๋‹ค. ๋‹ค์†œ์ด๋Š” ์ด ๊ธฐ๊ณ„๋ฅผ ์ด์šฉํ•ด์„œ ๊ทธ ๋งˆ์„์˜ ์ฃผ๋ฏผ M๋ช…์˜ ๋งˆ์Œ์„ ๋ชจ๋‘ ์ฝ์—ˆ๋‹ค.

๋‹ค์†œ์ด๋Š” ๊ธฐํ˜ธ 1๋ฒˆ์ด๋‹ค. ๋‹ค์†œ์ด๋Š” ์‚ฌ๋žŒ๋“ค์˜ ๋งˆ์Œ์„ ์ฝ์–ด์„œ ์ž์‹ ์„ ์ฐ์ง€ ์•Š์œผ๋ ค๋Š” ์‚ฌ๋žŒ์„ ๋ˆ์œผ๋กœ ๋งค์ˆ˜ํ•ด์„œ ๊ตญํšŒ์˜์›์— ๋‹น์„ ์ด ๋˜๊ฒŒ ํ•˜๋ ค๊ณ  ํ•œ๋‹ค. ๋‹ค๋ฅธ ๋ชจ๋“  ์‚ฌ๋žŒ์˜ ๋“ํ‘œ์ˆ˜ ๋ณด๋‹ค ๋งŽ์€ ๋“ํ‘œ์ˆ˜๋ฅผ ๊ฐ€์งˆ ๋•Œ, ๊ทธ ์‚ฌ๋žŒ์ด ๊ตญํšŒ์˜์›์— ๋‹น์„ ๋œ๋‹ค.

์˜ˆ๋ฅผ ๋“ค์–ด์„œ, ๋งˆ์Œ์„ ์ฝ์€ ๊ฒฐ๊ณผ ๊ธฐํ˜ธ 1๋ฒˆ์ด 5ํ‘œ, ๊ธฐํ˜ธ 2๋ฒˆ์ด 7ํ‘œ, ๊ธฐํ˜ธ 3๋ฒˆ์ด 7ํ‘œ ๋ผ๊ณ  ํ•œ๋‹ค๋ฉด, ๋‹ค์†œ์ด๋Š” 2๋ฒˆ ํ›„๋ณด๋ฅผ ์ฐ์œผ๋ ค๊ณ  ํ•˜๋˜ ์‚ฌ๋žŒ 1๋ช…๊ณผ, 3๋ฒˆ ํ›„๋ณด๋ฅผ ์ฐ์œผ๋ ค๊ณ  ํ•˜๋˜ ์‚ฌ๋žŒ 1๋ช…์„ ๋ˆ์œผ๋กœ ๋งค์ˆ˜ํ•˜๋ฉด, ๊ตญํšŒ์˜์›์— ๋‹น์„ ์ด ๋œ๋‹ค.

๋ˆ์œผ๋กœ ๋งค์ˆ˜ํ•œ ์‚ฌ๋žŒ์€ ๋ฐ˜๋“œ์‹œ ๋‹ค์†œ์ด๋ฅผ ์ฐ๋Š”๋‹ค๊ณ  ๊ฐ€์ •ํ•œ๋‹ค.

๋‹ค์†œ์ด๊ฐ€ ๋งค์ˆ˜ํ•ด์•ผํ•˜๋Š” ์‚ฌ๋žŒ์˜ ์ตœ์†Ÿ๊ฐ’์„ ์ถœ๋ ฅํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ์„ ์ž‘์„ฑํ•˜์‹œ์˜ค.

์ž…๋ ฅ

์ฒซ์งธ ์ค„์— ํ›„๋ณด์˜ ์ˆ˜ N์ด ์ฃผ์–ด์ง„๋‹ค. ๋‘˜์งธ ์ค„๋ถ€ํ„ฐ ์ฐจ๋ก€๋Œ€๋กœ ๊ธฐํ˜ธ 1๋ฒˆ์„ ์ฐ์œผ๋ ค๊ณ  ํ•˜๋Š” ์‚ฌ๋žŒ์˜ ์ˆ˜, ๊ธฐํ˜ธ 2๋ฒˆ์„ ์ฐ์œผ๋ ค๊ณ  ํ•˜๋Š” ์ˆ˜, ์ด๋ ‡๊ฒŒ ์ด N๊ฐœ์˜ ์ค„์— ๊ฑธ์ณ ์ž…๋ ฅ์ด ๋“ค์–ด์˜จ๋‹ค. N์€ 50๋ณด๋‹ค ์ž‘๊ฑฐ๋‚˜ ๊ฐ™์€ ์ž์—ฐ์ˆ˜์ด๊ณ , ๋“ํ‘œ์ˆ˜๋Š” 100๋ณด๋‹ค ์ž‘๊ฑฐ๋‚˜ ๊ฐ™์€ ์ž์—ฐ์ˆ˜์ด๋‹ค.

์ถœ๋ ฅ

์ฒซ์งธ ์ค„์— ๋‹ค์†œ์ด๊ฐ€ ๋งค์ˆ˜ํ•ด์•ผ ํ•˜๋Š” ์‚ฌ๋žŒ์˜ ์ตœ์†Ÿ๊ฐ’์„ ์ถœ๋ ฅํ•œ๋‹ค.


 

์‹ค๋ฒ„5.

๊ฐ€์žฅ ํ‘œ๊ฐ€ ๋งŽ์€ ์‚ฌ๋žŒ์—๊ฒŒ์„œ ํ‘œ๋ฅผ ๋บ์–ด์˜ค๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ๋– ์˜ฌ๋ฆด ์ˆ˜๋งŒ ์žˆ๋‹ค๋ฉด,

์šฐ์„ ์ˆœ์œ„ํ๋กœ ํ‘ธ๋Š” ๋ฐฉ๋ฒ•์ด ๊ฐ€์žฅ ๊ฐ„๋‹จํ•˜๋‹ค.

 

 

๋‚˜์˜ ํ’€์ด

#include <iostream>
#include <string>
#include <queue>
#include <vector>
using namespace std;

int main(){
    int n;
    priority_queue<int> pq; // top๊ฐ’์ด ๊ฐ€์žฅ ํผ
    int x;
    int ans = 0;

    cin >> n;
    if(n<=1) {
        cout << 0;
        return 0;
    }
    int first;
    cin >> first;
    for (int i = 1; i < n; ++i){
        cin >> x;
        pq.push(x);
    }
    while(pq.top() >= first && !pq.empty()){
        int tmp = pq.top();
        pq.pop();
        tmp -= 1;
        pq.push(tmp);
        ans++;
        first++;
    }
    cout << ans;
    return 0;
}

 

728x90
๋ฐ˜์‘ํ˜•