본문 바로가기

Problem Solving/백준

[백준/C++] 10814번 나이순 정렬


 

#include <bits/stdc++.h>
using namespace std;

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

int main() {
    cin.tie(NULL);
    int N;
    cin >> N;
    vector< pair<int,string> > arr(N);

    for(int i = 0; i < N; i++) {
        cin >> arr[i].first >> arr[i].second;
    }
    stable_sort(arr.begin(), arr.end(),compare);
    //sort(arr.begin(), arr.end(), compare);
    for(auto it : arr) {
        cout << it.first << " " << it.second << "\n";
    }
}

몰랐는데 algorithm header에 stable_sort가 있습니다. 그래서 순서가 바뀌지 않고 sorting하는 것이 가능합니다.

따로 compare 함수를 만들어서 pair를 솔팅할 수 있도록 하였고 문제를 풀 때는 cin과 cout이 묶여 있을 필요가 없으므로

tie를 풀어 조금 더 속도를 높였습니다.


문제: https://www.acmicpc.net/problem/10814

 

10814번: 나이순 정렬

온라인 저지에 가입한 사람들의 나이와 이름이 가입한 순서대로 주어진다. 이때, 회원들을 나이가 증가하는 순으로, 나이가 같으면 먼저 가입한 사람이 앞에 오는 순서로 정렬하는 프로그램을

www.acmicpc.net