๐Ÿ“ฆ Chango/๐Ÿฃ EDOC

[BOJ][C++] ๋ฐฑ์ค€ 9237๋ฒˆ : ์ด์žฅ๋‹˜ ์ดˆ๋Œ€

์„ ๋‹ฌ 2021. 11. 17. 20:41
๋ฐ˜์‘ํ˜•

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

 

9237๋ฒˆ: ์ด์žฅ๋‹˜ ์ดˆ๋Œ€

์ž…๋ ฅ์€ ๋‘ ์ค„๋กœ ์ด๋ฃจ์–ด์ ธ ์žˆ๋‹ค. ์ฒซ์งธ ์ค„์—๋Š” ๋ฌ˜๋ชฉ์˜ ์ˆ˜ N (1 ≤ N ≤ 100,000)์ด ์ฃผ์–ด์ง„๋‹ค. ๋‘˜์งธ ์ค„์—๋Š” ๊ฐ ๋‚˜๋ฌด๊ฐ€ ๋‹ค ์ž๋ผ๋Š”๋ฐ ๋ฉฐ์น ์ด ๊ฑธ๋ฆฌ๋Š”์ง€๋ฅผ ๋‚˜ํƒ€๋‚ธ ti๊ฐ€ ์ฃผ์–ด์ง„๋‹ค. (1 ≤ ti ≤ 1,000,000)

www.acmicpc.net

 

๋ฌธ์ œ

๋†๋ถ€ ์ƒ๊ทผ์ด๋Š” ๋งˆ๋‹น์— ์‹ฌ๊ธฐ ์œ„ํ•œ ๋‚˜๋ฌด ๋ฌ˜๋ชฉ n๊ฐœ๋ฅผ ๊ตฌ์ž…ํ–ˆ๋‹ค. ๋ฌ˜๋ชฉ ํ•˜๋‚˜๋ฅผ ์‹ฌ๋Š”๋ฐ ๊ฑธ๋ฆฌ๋Š” ์‹œ๊ฐ„์€ 1์ผ์ด๊ณ , ์ƒ๊ทผ์ด๋Š” ๊ฐ ๋ฌ˜๋ชฉ์ด ๋‹ค ์ž๋ผ๋Š”๋ฐ ๋ฉฐ์น ์ด ๊ฑธ๋ฆฌ๋Š”์ง€ ์ •ํ™•ํ•˜๊ฒŒ ์•Œ๊ณ  ์žˆ๋‹ค.

์ƒ๊ทผ์ด๋Š” ๋งˆ์„ ์ด์žฅ๋‹˜์„ ์ดˆ๋Œ€ํ•ด ์ž์‹ ์ด ์‹ฌ์€ ๋‚˜๋ฌด๋ฅผ ์ž๋ž‘ํ•˜๋ ค๊ณ  ํ•œ๋‹ค. ์ด์žฅ๋‹˜์„ ์‹ค๋ง์‹œํ‚ค๋ฉด ์•ˆ๋˜๊ธฐ ๋•Œ๋ฌธ์—, ๋ชจ๋“  ๋‚˜๋ฌด๊ฐ€ ์™„์ „ํžˆ ์ž๋ž€ ์ดํ›„์— ์ด์žฅ๋‹˜์„ ์ดˆ๋Œ€ํ•˜๋ ค๊ณ  ํ•œ๋‹ค. ์ฆ‰, ๋งˆ์ง€๋ง‰ ๋‚˜๋ฌด๊ฐ€ ๋‹ค ์ž๋ž€ ๋‹ค์Œ๋‚  ์ด์žฅ๋‹˜์„ ์ดˆ๋Œ€ํ•  ๊ฒƒ์ด๋‹ค.

์ƒ๊ทผ์ด๋Š” ๋‚˜๋ฌด๋ฅผ ์‹ฌ๋Š” ์ˆœ์„œ๋ฅผ ์‹ ์ค‘ํ•˜๊ฒŒ ๊ณจ๋ผ ์ด์žฅ๋‹˜์„ ์ตœ๋Œ€ํ•œ ๋นจ๋ฆฌ ์ดˆ๋Œ€ํ•˜๋ ค๊ณ  ํ•œ๋‹ค. ์ด์žฅ๋‹˜์„ ๋ฉฐ์น ์— ์ดˆ๋Œ€ํ•  ์ˆ˜ ์žˆ์„๊นŒ?

์ž…๋ ฅ

์ž…๋ ฅ์€ ๋‘ ์ค„๋กœ ์ด๋ฃจ์–ด์ ธ ์žˆ๋‹ค. ์ฒซ์งธ ์ค„์—๋Š” ๋ฌ˜๋ชฉ์˜ ์ˆ˜ N (1 ≤ N ≤ 100,000)์ด ์ฃผ์–ด์ง„๋‹ค. ๋‘˜์งธ ์ค„์—๋Š” ๊ฐ ๋‚˜๋ฌด๊ฐ€ ๋‹ค ์ž๋ผ๋Š”๋ฐ ๋ฉฐ์น ์ด ๊ฑธ๋ฆฌ๋Š”์ง€๋ฅผ ๋‚˜ํƒ€๋‚ธ ti๊ฐ€ ์ฃผ์–ด์ง„๋‹ค. (1 ≤ ti ≤ 1,000,000)

์ถœ๋ ฅ

์ฒซ์งธ ์ค„์— ๋ฉฐ์น ์— ์ด์žฅ๋‹˜์„ ์ดˆ๋Œ€ํ•  ์ˆ˜ ์žˆ๋Š”์ง€ ์ถœ๋ ฅํ•œ๋‹ค. ๋‹ต์ด ์—ฌ๋Ÿฌ ๊ฐ€์ง€์ธ ๊ฒฝ์šฐ์—๋Š” ๊ฐ€์žฅ ์ž‘์€ ๊ฐ’์„ ์ถœ๋ ฅํ•œ๋‹ค. ๋ฌ˜๋ชฉ์„ ๊ตฌ์ž…ํ•œ ๋‚ ์ด 1์ผ์ด๋‹ค.

 

ํ’€์ด1 - ์™ธ์•Š๋˜?

์ง์ ‘ ์‹œ๋ฎฌ๋ ˆ์ด์…˜์„ ๋Œ๋ฆฌ๋Š” ๋ฐฉ์‹์ด๋‹ค

ํ•˜๋ฃจ๊ฐ€ ์ง€๋‚˜๊ฐ์—๋”ฐ๋ผ ๋‚˜๋ฌด๊ฐ€ ์ž๋ผ๋Š” ๋ฐฉ์‹.. ์ธ๋ฐ.. 

์˜ˆ์ œ ๋‹ค ๋งž๋Š”๋ฐ...

๋งž ์™œ ํ‹€?

#include <iostream>
#include <vector>
#include <algorithm>

using namespace std;

bool compare (int i, int j){
    return i > j;
}

int main() {
    
    int n;
    vector <int> tree;

    cin >> n;
    
    for(int i=0; i<n; i++){
        int tmp;
        cin >> tmp;
        tree.push_back(tmp);
    }
    
    sort(tree.begin(), tree.end(), compare);
    
    int day = 1;
    for(int i=0, growing = tree[0]; true; i++){

        growing--;
        
        if(growing <= 0)
            break;
        
        if(i<n)
            growing = max(tree[i], growing);
        
        day++;
    }
    
    cout << day+1;
    
    return 0;
}

 

ํ’€์ด2 - ์„ฑ๊ณต

๊ทธ๋ƒฅ ๊ณ„์‚ฐํ–ˆ๋‹ค

#include <iostream>
#include <vector>
#include <algorithm>

using namespace std;

bool compare (int i, int j){
    return i > j;
}

int main() {
    
    int n;
    vector <int> tree;

    cin >> n;
    
    for(int i=0; i<n; i++){
        int tmp;
        cin >> tmp;
        tree.push_back(tmp);
    }
    
    sort(tree.begin(), tree.end(), compare);
    
    int day = tree[0] + 1;
    for(int i=0; i<n; i++){
        day = max(day, tree[i]+i+1);
    }
    
    cout << day + 1;
    
    return 0;
}
๋ฐ˜์‘ํ˜•