PS
BOJ - 10814. 나이순 정렬 (C++)
kugnuoy
2024. 4. 19. 21:15
10814. stable_sort()
https://www.acmicpc.net/problem/10814
10814번: 나이순 정렬
온라인 저지에 가입한 사람들의 나이와 이름이 가입한 순서대로 주어진다. 이때, 회원들을 나이가 증가하는 순으로, 나이가 같으면 먼저 가입한 사람이 앞에 오는 순서로 정렬하는 프로그램을
www.acmicpc.net
[풀이]
해당 문제는 pair의 first를 기준으로 오름차순 정렬하는 문제인데 first가 같을 때 먼저 입력 받은 pair를 먼저 출력하는 문제이다. 그냥 sort를 사용해서 구현해도 입력받은 순서대로 정렬되는 것처럼 보이지만 실제로 이를 보장하진 않는다. 따라서 stable_sort()를 사용해 이를 보장받아야 한다.
#include <bits/stdc++.h>
using namespace std;
vector<pair<int, string>> a;
bool cmp(pair<int, string> a, pair<int, string> b) {return a.first < b.first;}
int main(){
ios::sync_with_stdio(0); cin.tie(0);
int T; cin >> T;
while(T--){
int tmp;
string tmp_str;
cin >> tmp >> tmp_str;
a.push_back({tmp, tmp_str});
}
stable_sort(a.begin(), a.end(), cmp);
for (auto i:a) cout << i.first << ' ' << i.second << '\n';
}