🔗 문제 링크 : https://www.acmicpc.net/problem/10814
문제
온라인 저지에 가입한 사람들의 나이와 이름이 가입한 순서대로 주어진다. 이때, 회원들을 나이가 증가하는 순으로, 나이가 같으면 먼저 가입한 사람이 앞에 오는 순서로 정렬하는 프로그램을 작성하시오.
입출력 예시
풀이
sort()는 기본적으로 안정 정렬을 지원하지 않기 때문에, 사용하면 틀리게 된다.
결국, 입력을 받을 때 인덱스를 같이 저장하거나, 안정 정렬을 지원하는 stable_sort()를 사용해야한다.
아래 코드는 stable_sort()를 사용한 풀이다.
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
struct Member {
int age;
string name;
};
int main() {
ios_base::sync_with_stdio(false);
int N;
cin >> N;
vector<Member> members(N);
for(int i = 0; i < N; ++i) {
cin >> members[i].age >> members[i].name;
}
/* 안정 정렬 */
stable_sort(members.begin(), members.end(), [](Member a, Member b) {
return a.age < b.age;
});
for(const auto& member : members) {
cout << member.age << " " << member.name << "\n";
}
return 0;
}
'🐸 Problem Solving > BOJ' 카테고리의 다른 글
[BOJ/C++] 백준 1260번: DFS와 BFS (0) | 2024.08.14 |
---|---|
[BOJ/C++] 백준 11931번: 수 정렬하기 4 (0) | 2024.08.09 |
[BOJ/C++] 백준 10989번: 수 정렬하기 3 (0) | 2024.08.09 |