알고리즘/C++
[백준/실버5] 백준 10814번 나이순 정렬 - c++ (정렬 알고리즘) 문제 해석/코드 설명
셉인
2024. 3. 14. 11:49
728x90
[백준/실버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++ (정렬 알고리즘) 문제 해석/코드 설명
728x90