상세 컨텐츠

본문 제목

[백준/실버5] 백준 10814번 나이순 정렬 - c++ (정렬 알고리즘) 문제 해석/코드 설명

알고리즘/C++

by 셉인 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

관련글 더보기

댓글 영역