Algorithm
[백준 10814번 C++] 나이순 정렬
congcoding
2020. 9. 21. 22:53
1. 문제 링크
10814번: 나이순 정렬
온라인 저지에 가입한 사람들의 나이와 이름이 가입한 순서대로 주어진다. 이때, 회원들을 나이가 증가하는 순으로, 나이가 같으면 먼저 가입한 사람이 앞에 오는 순서로 정렬하는 프로그램을 �
www.acmicpc.net
2. 문제 설명
나이와 이름을 입력받은 후, 나이가 증가하는 순으로, 나이가 같으면 먼저 가입한 사람이 앞에 오는 순서로 정렬하여 출력하는 문제입니다.
3. 소스코드
BOJ 10814번 나이순 정렬 C++ 풀이입니다.
#include <iostream>
#include <algorithm>
using namespace std;
pair<int, string> p[100000];
bool comp(pair<int, string> p1, pair<int, string> p2)
{
return p1.first < p2.first;
}
int main(void)
{
ios::sync_with_stdio(0);
cin.tie(0);
int N;
cin >> N;
for (int i = 0; i < N; i++)
cin >> p[i].first >> p[i].second;
stable_sort(p, p + N, comp);
for (int i = 0; i < N; i++)
cout << p[i].first << ' ' << p[i].second << '\n';
return 0;
}
나이가 같으면 가입한 순서대로 정렬되어야 하므로 stable_sort함수를 이용하여 풀었습니다.
sort함수를 사용하면 나이가 같을 때, 가입한 순서와 다르게 정렬되는 경우가 있으므로 틀립니다.
pair의 경우 first(나이), second(이름) 순서로 정렬되는데,
이 문제에서 second(이름)는 정렬되면 안 되기 때문에 직접 comp함수를 만들어서 first만 비교하도록 구현했습니다.