๐Ÿ•๏ธ ICPC Sinchon/Sorting

[BOJ S4][C++] ๋ฐฑ์ค€ 1758๋ฒˆ : ์•Œ๋ฐ”์ƒ ๊ฐ•ํ˜ธ

์„ ๋‹ฌ 2022. 9. 6. 02:49
๋ฐ˜์‘ํ˜•

์Šคํƒ€๋ฐ•์Šค๋Š” ์†๋‹˜์„ ์ž…์žฅ์‹œํ‚ฌ ๋•Œ ๋…ํŠนํ•œ ๋ฐฉ๋ฒ•์œผ๋กœ ์ž…์žฅ์‹œํ‚จ๋‹ค.

์Šคํƒ€๋ฐ•์Šค์—์„œ๋Š” ์†๋‹˜์„ 8์‹œ๊ฐ€ ๋  ๋•Œ ๊นŒ์ง€, ๋ฌธ์•ž์— ์ค„ ์„ธ์›Œ ๋†“๋Š”๋‹ค. ๊ทธ๋ฆฌ๊ณ  8์‹œ๊ฐ€ ๋˜๋Š” ์ˆœ๊ฐ„ ์†๋‹˜๋“ค์€ ๋ชจ๋‘ ์ž…๊ตฌ์—์„œ ์ปคํ”ผ๋ฅผ ํ•˜๋‚˜์”ฉ ๋ฐ›๊ณ , ์ž๋ฆฌ๋กœ ๊ฐ„๋‹ค. ๊ฐ•ํ˜ธ๋Š” ์ž…๊ตฌ์—์„œ ์ปคํ”ผ๋ฅผ ํ•˜๋‚˜์”ฉ ์ฃผ๋Š” ์—ญํ• ์„ ํ•œ๋‹ค.

์†๋‹˜๋“ค์€ ์ž…๊ตฌ์— ๋“ค์–ด๊ฐˆ ๋•Œ, ๊ฐ•ํ˜ธ์—๊ฒŒ ํŒ์„ ์ค€๋‹ค. ์†๋‹˜๋“ค์€ ์ž๊ธฐ๊ฐ€ ์ปคํ”ผ๋ฅผ ๋ช‡ ๋ฒˆ์งธ ๋ฐ›๋Š”์ง€์— ๋”ฐ๋ผ ํŒ์„ ๋‹ค๋ฅธ ์•ก์ˆ˜๋กœ ๊ฐ•ํ˜ธ์—๊ฒŒ ์ค€๋‹ค. ๊ฐ ์†๋‹˜์€ ๊ฐ•ํ˜ธ์—๊ฒŒ ์›๋ž˜ ์ฃผ๋ ค๊ณ  ์ƒ๊ฐํ–ˆ๋˜ ๋ˆ - (๋ฐ›์€ ๋“ฑ์ˆ˜ - 1) ๋งŒํผ์˜ ํŒ์„ ๊ฐ•ํ˜ธ์—๊ฒŒ ์ค€๋‹ค. ๋งŒ์•ฝ, ์œ„์˜ ์‹์œผ๋กœ ๋‚˜์˜จ ๊ฐ’์ด ์Œ์ˆ˜๋ผ๋ฉด, ๊ฐ•ํ˜ธ๋Š” ํŒ์„ ๋ฐ›์„ ์ˆ˜ ์—†๋‹ค.

์˜ˆ๋ฅผ ๋“ค์–ด, ๋ฏผํ˜ธ๋Š” ํŒ์„ 3์› ์ฃผ๋ ค๊ณ  ํ–ˆ๊ณ , ์žฌํ•„์ด๋Š” ํŒ์„ 2์›, ์ฃผํ˜„์ด๊ฐ€ ํŒ์„ 1์› ์ฃผ๋ ค๊ณ  ํ•œ ๊ฒฝ์šฐ๋ฅผ ์ƒ๊ฐํ•ด๋ณด์ž.

๋ฏผํ˜ธ, ์žฌํ•„, ์ฃผํ˜„์ด ์ˆœ์„œ๋Œ€๋กœ ์ค„์„ ์„œ์žˆ๋‹ค๋ฉด, ๋ฏผํ˜ธ๋Š” ๊ฐ•ํ˜ธ์—๊ฒŒ 3-(1-1) = 3์›, ์žฌํ•„์ด๋Š” 2-(2-1) = 1์›, ์ฃผํ˜„์ด๋Š” 1-(3-1) = -1์›์„ ํŒ์œผ๋กœ ์ฃผ๊ฒŒ ๋œ๋‹ค. ์ฃผํ˜„์ด๋Š” ์Œ์ˆ˜์ด๊ธฐ ๋•Œ๋ฌธ์—, ๊ฐ•ํ˜ธ์—๊ฒŒ ํŒ์„ ์ฃผ์ง€ ์•Š๋Š”๋‹ค. ๋”ฐ๋ผ์„œ, ๊ฐ•ํ˜ธ๋Š” ํŒ์„ 3+1+0=4์›์„ ๋ฐ›๊ฒŒ ๋œ๋‹ค.

์Šคํƒ€๋ฐ•์Šค ์•ž์— ์žˆ๋Š” ์‚ฌ๋žŒ์˜ ์ˆ˜ N๊ณผ, ๊ฐ ์‚ฌ๋žŒ์ด ์ฃผ๋ ค๊ณ  ์ƒ๊ฐํ•˜๋Š” ํŒ์ด ์ฃผ์–ด์งˆ ๋•Œ, ์†๋‹˜์˜ ์ˆœ์„œ๋ฅผ ์ ์ ˆํžˆ ๋ฐ”๊ฟจ์„ ๋•Œ, ๊ฐ•ํ˜ธ๊ฐ€ ๋ฐ›์„ ์ˆ˜ ์ž‡๋Š” ํŒ์˜ ์ตœ๋Œ“๊ฐ’์„ ๊ตฌํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ์„ ์ž‘์„ฑํ•˜์‹œ์˜ค.

์ž…๋ ฅ

์ฒซ์งธ ์ค„์— ์Šคํƒ€๋ฐ•์Šค ์•ž์— ์„œ ์žˆ๋Š” ์‚ฌ๋žŒ์˜ ์ˆ˜ N์ด ์ฃผ์–ด์ง„๋‹ค. N์€ 100,000๋ณด๋‹ค ์ž‘๊ฑฐ๋‚˜ ๊ฐ™์€ ์ž์—ฐ์ˆ˜์ด๋‹ค. ๋‘˜์งธ ์ค„๋ถ€ํ„ฐ ์ด N๊ฐœ์˜ ์ค„์— ๊ฐ ์‚ฌ๋žŒ์ด ์ฃผ๋ ค๊ณ  ํ•˜๋Š” ํŒ์ด ์ฃผ์–ด์ง„๋‹ค. ํŒ์€ 100,000๋ณด๋‹ค ์ž‘๊ฑฐ๋‚˜ ๊ฐ™์€ ์ž์—ฐ์ˆ˜์ด๋‹ค.

์ถœ๋ ฅ

๊ฐ•ํ˜ธ๊ฐ€ ๋ฐ›์„ ์ˆ˜ ์žˆ๋Š” ํŒ์˜ ์ตœ๋Œ“๊ฐ’์„ ์ถœ๋ ฅํ•œ๋‹ค.

 

ํ’€์ด

 

6% ์—์„œ ํ‹€๋ ธ์Šต๋‹ˆ๋‹ค๊ฐ€ ๋œฌ๋‹ค๋ฉด..?

์ •์ˆ˜ํ˜•์„ int ๋ง๊ณ  long long int ๋กœ ํ•ด๋ณด์ž

 

// Authored by : seondal
// Co-authored by : -

// #include <bits/stdc++.h>
#include <iostream>
#include <vector>
#include <algorithm>

using namespace std;

long long int cal_tip(int n, vector<long long int> v) {
    long long int tip = 0;
    for(int i=0; i<n; i++) {
        long long int tmp = v[i] - i;
        if(tmp>=0) tip += tmp;
    }
    return tip;
}

int main() {
    int n;
    cin >> n;
    
    vector<long long int> v(n);
    for(int i=0; i<n; i++) cin >> v[i];
    
    sort(v.begin(), v.end(), greater<>());
    
    cout << cal_tip(n, v);
    
    return 0;
}

/*
 */
๋ฐ˜์‘ํ˜•