10814. 나이순 정렬 풀이
난이도: Silver V
문제 주소: https://www.acmicpc.net/problem/10814
문제 풀이
이 문제는 회원들의 정보를 나이 오름차순으로 나이가 같으면 가입한 순서대로 정렬하는 문제다.
문제에서 나이가 같으면 먼저 가입한 사람이 앞에 오는 순서를 만족시키기 위해 입력된 데이터의 상대적 순서를 유지하는 Stable Sort가 필요하다.
그리고 바로 정렬에 넣으면 나이순 정렬이 완료 된 후 이름의 사전 순 정렬이 발생하기 때문에 사전 순 정렬이 발생하지 않도록 나이만으로 정렬하게 하는 비교함수를 작성했다
bool compair(pair<int,string> x, pair<int,string> y)
{
return x.first < y.first;
}
stable sort는 나이가 같은 요소들의 경우 입력된 순서 를 정렬 후에도 그대로 유지하기 때문에 코드에서 별도로 가입 순서를 기록하지 않아도 문제를 해결할 수 있게 된다
최종 코드
#include <iostream>
#include <vector>
#include <algorithm>
#include <iomanip>
#include <math.h>
#include <queue>
#include <set>
#include <string>
#include <unordered_map>
using namespace std;
bool compair(pair<int,string> x, pair<int,string> y)
{
return x.first < y.first;
}
int main()
{
ios::sync_with_stdio(false);
cin.tie(nullptr);
vector <pair<int, string>> v;
int n;
cin >> n;
for (int i = 0; i < n; i++) {
int x;
string s;
cin >> x >> s;
v.push_back({x, s});
}
stable_sort(v.begin(), v.end(), compair);
for (pair<int, string> x : v) cout << x.first << " " << x.second << "\n";
return 0;
}
'Algorithm > 백준' 카테고리의 다른 글
| [백준] 11404 - 플로이드 (0) | 2026.04.03 |
|---|---|
| [백준] 9663 N-Queen (0) | 2026.04.01 |
| [백준] 10942 - 팰린드롬? (0) | 2026.03.23 |
| [백준] 2166 - 다각형의 면적 풀이 (0) | 2026.03.22 |
| [백준] 12851 - 숨바꼭질2 (0) | 2026.03.19 |