코드1
#include <bits/stdc++.h>
using namespace std;
int n,age;
vector<tuple<int,string,int>> v;
string name;
bool cmp (tuple<int,string,int> a, tuple<int,string,int> b) {
if(get<0>(a) == get<0>(b)) return get<2>(a) < get<2>(b);
return get<0>(a) < get<0>(b);
}
int main() {
cin >> n;
for(int i = 0; i < n; i++) {
cin >> age >> name;
v.push_back({age, name, i});
}
sort(v.begin(), v.end(),cmp); // 불안정 정렬
for(int i = 0; i < n; i++) {
cout << get<0>(v[i]) << " " << get<1>(v[i]) << '\n';
}
return 0;
}
코드2
#include <bits/stdc++.h>
using namespace std;
int n,age;
vector<pair<int,string>> v;
string name;
bool cmp(pair<int,string> a, pair<int,string> b) {
return a.first < b.first;
}
int main() {
cin >> n;
for(int i = 0; i < n; i++) {
cin >> age >> name;
v.push_back({age, name});
}
stable_sort(v.begin(), v.end(),cmp); // 안정정렬, 동일한 값에 대해 기존 순서가 보장
for(int i = 0; i < n; i++) cout << v[i].first << " " << v[i].second << '\n';
return 0;
}
코드 1번은 sort를 이용하고 cmp 함수에 tuple을 넣어 정렬을 했다. 별 다른 건 없고, tuple에서 값을 가져오는 방법을 복습할 수 있어서 가져와보았다. 2번은 stable_sort()를 이용해서 기존에 있던 순서를 보장해주었다. 사용 방법은 sort와 같다. 안정 정렬은 동일한 값에 대해 기존 순서가 보장되는, 예측할 수 있는 정렬을 말한다.
'백준' 카테고리의 다른 글
[백준] 4134번 다음 소수 C++ 코드 (0) | 2024.04.29 |
---|---|
[백준] 24511번 queuestack C++ 코드 (0) | 2024.04.29 |
[백준] 11650번 좌표 정렬하기 C++ 코드 (0) | 2024.04.23 |
[백준] 11651번 좌표 정렬하기 2 C++ 코드 (0) | 2024.04.23 |
[백준] 14620번 꽃길 C++ 코드 (0) | 2024.04.22 |