문제 풀이/BOJ 문제 풀이

[BOJ알고리즘, C++]#10814 나이순 정렬

Hardii2 2022. 2. 2. 21:18

[BOJ 알고리즘, C++] #10814 나이순 정렬

 

BOJ 알고리즘 문제 풀이, 10814번 문제 : 나이순 정렬

입력받은 정보를 통해, 나이순으로 정렬하고 나이가 같다면 입력 순으로 정렬

 

 


 

문제

 

 

풀이 과정

 

1. 나이와 이름을 한 객체에 저장하기위해 "pair <int, string>"을 생성합니다.

2. 각각의 pair들을 정렬 하기위해 "vector <pair <int, string>>"을 생성합니다.

3. sort()와 같은 형식으로 stable_sort()를 호출합니다.

3. stable_sort()은 비교 값의 크기가 같다면, 앞 선 원소와 인접한 바로 뒤의 원소의 상대적 위치를 유지합니다.

4. 사용자 정의 함수, comparision,의 경우, pair의 첫 번째 객체(나이)만 비교하여 정렬 동작을 돕습니다.

 

코드 작성
#include <iostream>
#include <vector>
#include <string>
#include <algorithm>
using namespace std;

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

int main ()
{
    int N;
    cin >> N;
    // 나이, 이름 pair 
    vector<pair<int, string>> vv;
    pair<int, string> tmp;
    for(int i=0; i<N; i++)
    {
        int age;
        cin >> tmp.first >> tmp.second;
        vv.push_back(tmp);
    }
    stable_sort(vv.begin(), vv.end(), comparison);
    for(int i=0; i<N; i++)
    {
        cout << vv[i].first << " "<< vv[i].second << '\n';
    }
}