문제 풀이/BOJ 문제 풀이
[BOJ알고리즘, C++]#10814 나이순 정렬
Hardii2
2022. 2. 2. 21:18
[BOJ 알고리즘, C++] #10814 나이순 정렬
BOJ 알고리즘 문제 풀이, 10814번 문제 : 나이순 정렬
입력받은 정보를 통해, 나이순으로 정렬하고 나이가 같다면 입력 순으로 정렬
문제
풀이 과정
1. 나이와 이름을 한 객체에 저장하기위해 "pair <int, string>"을 생성합니다.
2. 각각의 pair들을 정렬 하기위해 "vector <pair <int, string>>"을 생성합니다.
3. sort()와 같은 형식으로 stable_sort()를 호출합니다.
3. stable_sort()은 비교 값의 크기가 같다면, 앞 선 원소와 인접한 바로 뒤의 원소의 상대적 위치를 유지합니다.
4. 사용자 정의 함수, comparision,의 경우, pair의 첫 번째 객체(나이)만 비교하여 정렬 동작을 돕습니다.
코드 작성
#include <iostream>
#include <vector>
#include <string>
#include <algorithm>
using namespace std;
bool comparison (pair<int, string> a,
pair<int, string> b)
{
return a.first < b.first;
}
int main ()
{
int N;
cin >> N;
// 나이, 이름 pair
vector<pair<int, string>> vv;
pair<int, string> tmp;
for(int i=0; i<N; i++)
{
int age;
cin >> tmp.first >> tmp.second;
vv.push_back(tmp);
}
stable_sort(vv.begin(), vv.end(), comparison);
for(int i=0; i<N; i++)
{
cout << vv[i].first << " "<< vv[i].second << '\n';
}
}