BOJ10814

김현민·2021년 1월 13일
0

Algorithm

목록 보기
2/126
post-thumbnail

BOJ10814. 나이순 정렬

문제

코드

#include <iostream>
#include <vector>
#include <algorithm>
#include <string>

using namespace std;

// class Student{
//     public:
//     int age;
//     string name;
//     Student(int age, string name){
//         this->age = age;
//         this -> name = name;
//     }

// };
bool compare(pair<int, string> a, pair<int, string> b)
{
    return a.first < b.first;
}

int main(int argc, char const *argv[])
{
    int n, age;
    string name;

    cin >> n;

    vector<pair<int, string>> v;

    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;
}
  • 부족했던 점
    compare(사용자 정의) 함수에 대해 정의하는 부분

원소값이 같은 경우가 존재한다면 `stable_sort`를 사용한다.

sort를 사용하면 같은 값이 먼저 나오는 순서를 알기 어렵지만
stable_sort에서 정의를 해주면 순서를 정의할 수 있다.

compare(pair<int,string> a, pair<int, string> b){
if( a.age == b.age ) { a.name<b.name}

stable_sort로 정렬한다면 컨테이너의 앞의 원소(여기선 vector의 앞 원소) 순서대로 정렬이 된다

profile
Jr. FE Dev

0개의 댓글