๐Ÿ•๏ธ ICPC Sinchon

[BOJ S5][C++] ๋ฐฑ์ค€ 10814: ๋‚˜์ด์ˆœ ์ •๋ ฌ

์„ ๋‹ฌ 2023. 1. 11. 18:23
๋ฐ˜์‘ํ˜•

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

 

10814๋ฒˆ: ๋‚˜์ด์ˆœ ์ •๋ ฌ

์˜จ๋ผ์ธ ์ €์ง€์— ๊ฐ€์ž…ํ•œ ์‚ฌ๋žŒ๋“ค์˜ ๋‚˜์ด์™€ ์ด๋ฆ„์ด ๊ฐ€์ž…ํ•œ ์ˆœ์„œ๋Œ€๋กœ ์ฃผ์–ด์ง„๋‹ค. ์ด๋•Œ, ํšŒ์›๋“ค์„ ๋‚˜์ด๊ฐ€ ์ฆ๊ฐ€ํ•˜๋Š” ์ˆœ์œผ๋กœ, ๋‚˜์ด๊ฐ€ ๊ฐ™์œผ๋ฉด ๋จผ์ € ๊ฐ€์ž…ํ•œ ์‚ฌ๋žŒ์ด ์•ž์— ์˜ค๋Š” ์ˆœ์„œ๋กœ ์ •๋ ฌํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ์„

www.acmicpc.net

 

๋ฌธ์ œ

์˜จ๋ผ์ธ ์ €์ง€์— ๊ฐ€์ž…ํ•œ ์‚ฌ๋žŒ๋“ค์˜ ๋‚˜์ด์™€ ์ด๋ฆ„์ด ๊ฐ€์ž…ํ•œ ์ˆœ์„œ๋Œ€๋กœ ์ฃผ์–ด์ง„๋‹ค. ์ด๋•Œ, ํšŒ์›๋“ค์„ ๋‚˜์ด๊ฐ€ ์ฆ๊ฐ€ํ•˜๋Š” ์ˆœ์œผ๋กœ, ๋‚˜์ด๊ฐ€ ๊ฐ™์œผ๋ฉด ๋จผ์ € ๊ฐ€์ž…ํ•œ ์‚ฌ๋žŒ์ด ์•ž์— ์˜ค๋Š” ์ˆœ์„œ๋กœ ์ •๋ ฌํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ์„ ์ž‘์„ฑํ•˜์‹œ์˜ค.

์ž…๋ ฅ

์ฒซ์งธ ์ค„์— ์˜จ๋ผ์ธ ์ €์ง€ ํšŒ์›์˜ ์ˆ˜ N์ด ์ฃผ์–ด์ง„๋‹ค. (1 ≤ N ≤ 100,000)

๋‘˜์งธ ์ค„๋ถ€ํ„ฐ N๊ฐœ์˜ ์ค„์—๋Š” ๊ฐ ํšŒ์›์˜ ๋‚˜์ด์™€ ์ด๋ฆ„์ด ๊ณต๋ฐฑ์œผ๋กœ ๊ตฌ๋ถ„๋˜์–ด ์ฃผ์–ด์ง„๋‹ค. ๋‚˜์ด๋Š” 1๋ณด๋‹ค ํฌ๊ฑฐ๋‚˜ ๊ฐ™์œผ๋ฉฐ, 200๋ณด๋‹ค ์ž‘๊ฑฐ๋‚˜ ๊ฐ™์€ ์ •์ˆ˜์ด๊ณ , ์ด๋ฆ„์€ ์•ŒํŒŒ๋ฒณ ๋Œ€์†Œ๋ฌธ์ž๋กœ ์ด๋ฃจ์–ด์ ธ ์žˆ๊ณ , ๊ธธ์ด๊ฐ€ 100๋ณด๋‹ค ์ž‘๊ฑฐ๋‚˜ ๊ฐ™์€ ๋ฌธ์ž์—ด์ด๋‹ค. ์ž…๋ ฅ์€ ๊ฐ€์ž…ํ•œ ์ˆœ์„œ๋กœ ์ฃผ์–ด์ง„๋‹ค.

์ถœ๋ ฅ

์ฒซ์งธ ์ค„๋ถ€ํ„ฐ ์ด N๊ฐœ์˜ ์ค„์— ๊ฑธ์ณ ์˜จ๋ผ์ธ ์ €์ง€ ํšŒ์›์„ ๋‚˜์ด ์ˆœ, ๋‚˜์ด๊ฐ€ ๊ฐ™์œผ๋ฉด ๊ฐ€์ž…ํ•œ ์ˆœ์œผ๋กœ ํ•œ ์ค„์— ํ•œ ๋ช…์”ฉ ๋‚˜์ด์™€ ์ด๋ฆ„์„ ๊ณต๋ฐฑ์œผ๋กœ ๊ตฌ๋ถ„ํ•ด ์ถœ๋ ฅํ•œ๋‹ค.

 

ํ’€์ด

๋‚˜์ด์ˆœ -> ์ด๋ฆ„์ˆœ์ผ๊ฑฐ๋ผ๋Š” ํŽธ๊ฒฌ์œผ๋กœ ๋ฌธ์ œ๋ฅผ ํ’€์–ด์„œ ์ดˆ๋ฐ˜์— ์‚ฝ์งˆํ–ˆ๋‹ค..

๊ฐ€์ž… ์ˆœ์„œ๋ฅผ ๋ฐ˜์˜ํ•˜๋ ค๋ฉด ๊ฐ€์ž… ์ˆœ์„œ๋ฅผ ๊ด€๋ฆฌํ•˜๊ฑฐ๋‚˜ stable_sort๋ฅผ ์ด์šฉํ•˜์—ฌ ๋‚˜์ด๊ฐ€ ๊ฐ™์„๋•Œ๋Š” ์ˆœ์„œ๊ฐ€ ๋ณ€ํ•˜์ง€ ์•Š๋„๋ก ๊ตฌํ˜„ํ•ด์•ผํ•˜๋Š” ๋ฌธ์ œ๋‹ค.

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

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

using namespace std;

typedef pair<int, string> ci;

bool cmp (ci a, ci b) {
    if(a.first != b.first)
        return a.first < b.first;
    return false;
}

int main() {
    ios_base::sync_with_stdio(false); cin.tie(NULL);
    
    int n;
    cin >> n;
    vector<ci>v(n);
    for(int i=0; i<n; i++)
        cin >> v[i].first >> v[i].second;
    
    stable_sort(v.begin(), v.end(), cmp);
    
    for(int i=0; i<n; i++)
        cout << v[i].first << " " << v[i].second << "\n";
    
    return 0;
}

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