๐ŸŒฒ Altu-Bitu/0906 ๋งต๊ณผ ์…‹

[BOJ S3][C++] ๋ฐฑ์ค€ 2910๋ฒˆ: ๋นˆ๋„ ์ •๋ ฌ

์„ ๋‹ฌ 2022. 12. 28. 17:37
๋ฐ˜์‘ํ˜•

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

 

2910๋ฒˆ: ๋นˆ๋„ ์ •๋ ฌ

์ฒซ์งธ ์ค„์— ๋ฉ”์‹œ์ง€์˜ ๊ธธ์ด N๊ณผ C๊ฐ€ ์ฃผ์–ด์ง„๋‹ค. (1 ≤ N ≤ 1,000, 1 ≤ C ≤ 1,000,000,000) ๋‘˜์งธ ์ค„์— ๋ฉ”์‹œ์ง€ ์ˆ˜์—ด์ด ์ฃผ์–ด์ง„๋‹ค.

www.acmicpc.net

 

๋ฌธ์ œ

์œ„๋Œ€ํ•œ ํ•ด์ปค ์ฐฝ์˜์ด๋Š” ๋ชจ๋“  ์•”ํ˜ธ๋ฅผ ๊นจ๋Š” ๋ฐฉ๋ฒ•์„ ๋ฐœ๊ฒฌํ–ˆ๋‹ค. ๊ทธ ๋ฐฉ๋ฒ•์€ ๋นˆ๋„๋ฅผ ์กฐ์‚ฌํ•˜๋Š” ๊ฒƒ์ด๋‹ค.

์ฐฝ์˜์ด๋Š” ๋งํ•  ์ˆ˜ ์—†๋Š” ๋ฐฉ๋ฒ•์„ ์ด์šฉํ•ด์„œ ํ˜„์šฐ๊ฐ€ ๊ฐ•์‚ฐ์ด์—๊ฒŒ ๋ณด๋‚ด๋Š” ๋ฉ”์‹œ์ง€๋ฅผ ํš๋“ํ–ˆ๋‹ค. ์ด ๋ฉ”์‹œ์ง€๋Š” ์ˆซ์ž N๊ฐœ๋กœ ์ด๋ฃจ์–ด์ง„ ์ˆ˜์—ด์ด๊ณ , ์ˆซ์ž๋Š” ๋ชจ๋‘ C๋ณด๋‹ค ์ž‘๊ฑฐ๋‚˜ ๊ฐ™๋‹ค. ์ฐฝ์˜์ด๋Š” ์ด ์ˆซ์ž๋ฅผ ์ž์ฃผ ๋“ฑ์žฅํ•˜๋Š” ๋นˆ๋„์ˆœ๋Œ€๋กœ ์ •๋ ฌํ•˜๋ ค๊ณ  ํ•œ๋‹ค.

๋งŒ์•ฝ, ์ˆ˜์—ด์˜ ๋‘ ์ˆ˜ X์™€ Y๊ฐ€ ์žˆ์„ ๋•Œ, X๊ฐ€ Y๋ณด๋‹ค ์ˆ˜์—ด์—์„œ ๋งŽ์ด ๋“ฑ์žฅํ•˜๋Š” ๊ฒฝ์šฐ์—๋Š” X๊ฐ€ Y๋ณด๋‹ค ์•ž์— ์žˆ์–ด์•ผ ํ•œ๋‹ค. ๋งŒ์•ฝ, ๋“ฑ์žฅํ•˜๋Š” ํšŸ์ˆ˜๊ฐ€ ๊ฐ™๋‹ค๋ฉด, ๋จผ์ € ๋‚˜์˜จ ๊ฒƒ์ด ์•ž์— ์žˆ์–ด์•ผ ํ•œ๋‹ค.

์ด๋ ‡๊ฒŒ ์ •๋ ฌํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ๋นˆ๋„ ์ •๋ ฌ์ด๋ผ๊ณ  ํ•œ๋‹ค.

์ˆ˜์—ด์ด ์ฃผ์–ด์กŒ์„ ๋•Œ, ๋นˆ๋„ ์ •๋ ฌ์„ ํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ์„ ์ž‘์„ฑํ•˜์‹œ์˜ค.

์ž…๋ ฅ

์ฒซ์งธ ์ค„์— ๋ฉ”์‹œ์ง€์˜ ๊ธธ์ด N๊ณผ C๊ฐ€ ์ฃผ์–ด์ง„๋‹ค. (1 ≤ N ≤ 1,000, 1 ≤ C ≤ 1,000,000,000)

๋‘˜์งธ ์ค„์— ๋ฉ”์‹œ์ง€ ์ˆ˜์—ด์ด ์ฃผ์–ด์ง„๋‹ค.

์ถœ๋ ฅ

์ฒซ์งธ ์ค„์— ์ž…๋ ฅ์œผ๋กœ ์ฃผ์–ด์ง„ ์ˆ˜์—ด์„ ๋นˆ๋„ ์ •๋ ฌํ•œ ๋‹ค์Œ ์ถœ๋ ฅํ•œ๋‹ค.

 

ํ’€์ด

์ •๋ ฌ์˜ ์ˆœ์œ„๋ฅผ ์ƒ๊ฐํ•˜์—ฌ cmp ํ•จ์ˆ˜๋ฅผ ๋งŒ๋“ ๋‹ค

1์ˆœ์œ„ - ๋นˆ๋„์ˆ˜ ๋‚ด๋ฆผ์ฐจ์ˆœ

2์ˆœ์œ„ - ์ˆœ์„œ ์˜ค๋ฆ„์ฐจ์ˆœ

 

map์„ ๋‘๊ฐœ๋ฅผ ๋งŒ๋“ค์–ด์„œ ๊ฐ ํ‚ค ๊ฐ’์— ํ•ด๋‹นํ•˜๋Š” ๋นˆ๋„์ˆ˜์™€ ์ˆœ์„œ๋ฅผ ๋„ฃ์–ด ๊ด€๋ฆฌํ•ด์คฌ๋‹ค.

 

sort ๋ฐฐ์—ด์„ ์ด์šฉํ•˜๊ธฐ ์œ„ํ•ด vector<pair<int,int>> ๋ฅผ ์ด์šฉํ–ˆ๊ณ ,

(first=๊ฐ’, second=๋นˆ๋„์ˆ˜๋˜๋Š”์ˆœ์„œ)

 

๋นˆ๋„์ˆ˜๋ฅผ ๋จผ์ € ๋น„๊ต ํ•œ ๋’ค, ์ˆœ์„œ๋ฅผ ๋น„๊ตํ•˜๋Š” ๋ฐฉ์‹์œผ๋กœ cmp ํ•จ์ˆ˜๋ฅผ ๊ตฌํ˜„ํ–ˆ๋‹ค.

 

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

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

using namespace std;

typedef pair<int, int> ci;

map<int, int> freq;  // freq[a] = a๊ฐ€ ๋‚˜์˜จ ๋นˆ๋„ ์ˆ˜
map<int, int> order;  // order[a] = a๊ฐ€ ์ฒ˜์Œ ๋‚˜์˜จ ์ˆœ๋ฒˆ

bool cmp(ci a, ci b) {
    if(a.second != b.second) {
        return a.second > b.second;
    }
    return order[a.first] < order[b.first];
}

int main() {
    ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL);
    
    int n, c;
    cin >> n >> c;
    
    int input;
    for(int i=0; i<n; i++) {
        cin >> input;
        
        if(!freq[input])
            order[input] = i;
        
        freq[input]++;
    }
    
    vector<ci> ans (freq.begin(), freq.end());
    sort(ans.begin(), ans.end(), cmp);
    
    for(int i=0; i<ans.size(); i++) {
        while(ans[i].second) {
            cout << ans[i].first << " ";
            ans[i].second--;
        }
    }
    
    return 0;
}

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