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';
}