반응형
https://www.acmicpc.net/problem/10814
10814번: 나이순 정렬
온라인 저지에 가입한 사람들의 나이와 이름이 가입한 순서대로 주어진다. 이때, 회원들을 나이가 증가하는 순으로, 나이가 같으면 먼저 가입한 사람이 앞에 오는 순서로 정렬하는 프로그램을
www.acmicpc.net
sort는 퀵정렬을 기반으로하는 불안정 정렬이다.
고로, 나이순으로 정렬을 하지만, 나이가 같다면 뒤에는 어떤 이름이 어떻게 정렬될지 모른다.
간단한 정렬문제지만 조건이 있다. 나이가 같다면 먼저 기입된 순으로 출력할 것.
찾아보니
stable_sort 라는 녀석이 있는데 병합정렬이다.
둘의 결정적 차이라면
sort : 기존의 순서를 보장하지않음.
stable_sort : 기존의 순서를 보장함.
속도의 측면에선 퀵정렬인 sort가 빠르다.
이렇게 또 하나를 알아간다.
제대로 이해한게 맞겠지?
#include <iostream>
#include <algorithm>
#include <vector>
#include <string>
using namespace std;
bool cmp(pair<int, string> age, pair<int, string> name)
{
return age.first < name.first;
}
int main()
{
ios::sync_with_stdio(false);
cin.tie(NULL);
cout.tie(NULL);
int N, age;
string name;
vector<pair<int, string>> vec;
cin >> N;
for (auto i = 0; i < N; i++)
{
cin >> age >> name;
vec.push_back(make_pair(age, name));
}
stable_sort(vec.begin(), vec.end(), cmp);
for (auto i = 0; i < vec.size(); i++)
{
cout << vec[i].first << " " << vec[i].second << "\n";
}
}
반응형
'STUDY > Baekjoon' 카테고리의 다른 글
[백준] 25304 c++ 영수증 (0) | 2022.08.24 |
---|---|
[백준] 2108 c++ 통계학 (0) | 2022.08.22 |
[백준] 11650 c++ 좌표 정렬하기 (0) | 2022.08.21 |
[백준] 10816 c++ 숫자 카드 2 (0) | 2022.08.19 |
[백준] 1920 c++ 수 찾기 (0) | 2022.08.19 |