728x90
[백준알고리즘] 10814번: 나이순 정렬 -C++
'1181번 단어 정렬'과 마찬가지로 두 가지 값을 동시에 비교해야 한다.
1181번 문제에 대한 풀이는 아래 링크에 있다.
[백준알고리즘] 1181번: 단어 정렬 -C++ (tistory.com)
이번 10814번 문제에서도 마찬가지로 int
와 string
으로 구성된 pair
가 존재한다.
그리고 sort
함수를 이용해줬는데, 이번에는 모든 원소를 비교하는 단순한 오름차순 정렬이 아닌 나이와 가입한 순서에 대한 오름차순 정렬이기 때문에 less<>
나 greater<>
가 아닌 새롭게 compare라는 비교 함수를 만들어주었다.
비교 함수에서는 가입한 순서는 고려하지 않았고, 문자열의 길이에 대해서만 정렬을 해주었다.
기본적으로 swap한 결과는 같은 값이라면 작은 인덱스의 값과 큰 인덱스의 값의 순서는 유지가 되기 때문이다.
아래는 C++ 코드다.
#include <iostream>
#include <algorithm>
#include <vector>
void solve(void);
int main(void)
{
std::ios::sync_with_stdio(false);
std::cin.tie(NULL);
solve();
}
bool compare(std::pair<int, std::string> a, std::pair<int, std::string> b)
{
return a.first < b.first;
}
void solve(void)
{
int n;
std::cin >> n;
std::vector<std::pair<int, std::string>> members;
for (int i = 0; i < n; i++)
{
int age; std::string name;
std::cin >> age >> name;
members.push_back(std::make_pair(age, name));
}
std::sort(members.begin(), members.end(), compare);
for (int i = 0; i < n; i++)
std::cout << members[i].first << " " << members[i].second << '\n';
}
잘못된 점이나 부족한 점 지적해주시면 감사하겠습니다
728x90
'algorithm > 백준알고리즘' 카테고리의 다른 글
[백준알고리즘] 10799번: 쇠막대기 -Python, C++ (0) | 2021.01.27 |
---|---|
[백준알고리즘] 1009번: 분산처리 -C++ (0) | 2021.01.26 |
[백준알고리즘] 1181번: 단어 정렬 -C++ (0) | 2021.01.25 |
[백준알고리즘] 11650번: 좌표 정렬하기 -C++ (0) | 2021.01.24 |
[백준알고리즘] 2108번: 통계학 -C++ (0) | 2021.01.24 |