1. 문제 링크
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만 비교하도록 구현했습니다.
'Algorithm' 카테고리의 다른 글
[백준 14888번 C++] 연산자 끼워넣기 (0) | 2020.10.07 |
---|---|
[백준 11399번 C++] ATM (0) | 2020.10.05 |
[백준 2309번 C++] 일곱 난쟁이 (0) | 2020.10.05 |
[백준 2751번 C++] 수 정렬하기 2 (0) | 2020.09.21 |
[백준 2750번 C++] 수 정렬하기 (0) | 2020.09.20 |