코학다식
[백준/BOJ/C언어] 10814번 :: 나이순 정렬 본문
Solution
정렬 함수인 sort()
만 사용하면 쉽게 풀 수 있는 문제로 보이지만, 주의해야 할 것이 하나 있다. 나이가 같은 경우 먼저 가입한, 즉 먼저 입력받은 요소가 앞에 와야 한다는 것이다. 이를 위해 비교 함수(comp
)를 바꿔 줄 수도 있지만, sort()
와 같이 정렬 함수 중 하나인 stable_sort()
를 사용하면 간편하게 풀 수 있다. stable_sort()
는 sort()
와 같이 정렬을 수행한다는 것은 같지만 값이 같은 경우에는 원래의 순서를 그대로 유지한다. sort()
의 경우 입력받은 데이터의 크기가 작으면 값이 같은 경우에 따로 처리를 해 주지 않아도 순서가 유지되는 것처럼 보이나, 데이터가 커지면 랜덤하게 바뀔 수 있다.
code
#include <cstdio>
#include <iostream>
#include <vector>
#include <algorithm>
#include <string>
using namespace std;
struct baekjoon {
int age;
string name;
};
baekjoon member[100001];
bool comp(baekjoon a, baekjoon b) {
return a.age < b.age;
}
int main() {
int N;
cin >> N;
for (int i = 0; i < N; i++) {
cin >> member[i].age >> member[i].name;
}
stable_sort(member, member + N, comp);
for (int i = 0; i < N; i++)
cout << member[i].age << " " <<member[i].name << "\n";
return 0;
}
'Algorithm > Problem' 카테고리의 다른 글
[프로그래머스/C++] 섬 연결하기 (0) | 2020.09.01 |
---|---|
[백준/BOJ/C언어] 2470번 :: 두 용액 (0) | 2019.09.25 |
[백준/BOJ/C언어] 10211번 :: Maximum Subarray (0) | 2019.09.19 |
[백준/BOJ/C언어] 2805번 :: 나무 자르기 (0) | 2019.09.10 |
[백준/BOJ/C언어] 11375번 :: 열혈강호 (0) | 2019.08.23 |
Comments