[백준/실버5] 백준 10814번 나이순 정렬 - c++ (정렬 알고리즘) 문제 해석/코드 설명
코딩테스트 타파하기 1주차 - 3번
1. 나이 순으로 정렬
2. 나이가 같으면 가입한 순 (값이 들어간 순서대로)
sort() 기존 순서를 보장하지 않는다.
stable_sort() 기존 순서를 보장한다.
문제에서 입력된 순서로 출력을 원했으니 stable_sort를 이용해줘야한다.
vector<pair<int,string>> v; // 에 값 넣는 법
cin >> age >> name;
v.push_back(make_pair(age, name));
vector<pair<int, string>> v(n); // -> 크기 지정
cin >> v[i].first >> v[i].second;
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
bool compare(pair<int, string> p1, pair<int, string> p2){ //비교함수
return p1.first < p2.first;
}
int main (){
ios_base::sync_with_stdio(false);
cin.tie(nullptr); cout.tie(nullptr);
int n=0;
cin >>n;
vector<pair<int,string>> v;
int age=0;
string name="";
for(int i=0; i<n; i++){
cin >> age >> name;
v.push_back(make_pair(age, name)); //벡터에 값 넣기
}
stable_sort(v.begin(), v.end(), compare); //기존 순서 유지
for(int i=0; i<n; i++){
cout<< v[i].first <<" "<< v[i].second <<"\n";
}
return 0;
}
stable_sort를 이용하지 않으면 '가입한 순'이라는 조건에 어긋나서 틀리게 된다.
[백준/실버5] 10814 나이순 정렬 - c++ (정렬 알고리즘) 문제 해석/코드 설명
[백준/실버3] 백준 15649 N과 M(1) - c++ (dfs/ 백트레킹) (1) | 2024.03.23 |
---|---|
[백준/실버4] 백준 10610번 30 - c++ (수학/그리디 알고리즘/ 문자열/ 정렬/ 정수론) 문제 해석/코드 설명 (2) | 2024.03.18 |
[백준/실버3] 백준 2108번 통계학 - c++ (수학/ 구현/ 정렬 알고리즘) 문제 해석/코드 설명 (0) | 2024.03.12 |
[백준/실버5] 백준 13241번 최소공배수 - c++ / 유클리드 호제법(최대공약수, 최소공배수) 문제 해석/코드 설명 (0) | 2024.03.12 |
[백준] 4049 균형잡힌 세상 실버 4 - stack (0) | 2023.07.22 |
댓글 영역