[C++] BOJ 10814번 : 나이순 정렬

📝 문제


💻 실행 코드

// BOJ 10814번 : 나이순 정렬
#include <iostream>
#include <algorithm>
#include <vector>
 using namespace std;

bool compare(pair<int, string> a, pair<int, string> b){
    // 사용자 정렬기준(첫번째 원소를 기준으로 오름차순)
    if(a.first < b.first)
        return true;
    else
        return false;
}

int main() {
    int n;
    cin >> n;
    vector<pair<int, string>> v(n); // 나이와 이름을 담을 벡터 생성

    for(int i = 0; i < n; i++){
        cin >> v[i].first >> v[i].second;
    }

    // compare함수를 이용해 같은 값일 때 들어온 순서대로 정렬하게 함
    stable_sort(v.begin(), v.end(), compare);

    for(int i = 0; i < n; i++){
        cout << v[i].first << " " << v[i].second << "\n";
    }
}

📚 문제 풀이

pair<type, type> 이란?

  • 2개의 각각 지정한 타입의 값을 저장
  • 저장한 값은 .first, .second로 접근할 수 있음

stable sort() 함수란?

  • 정렬해야 할 원소가 같은 경우 sort() 함수로 정렬한다면 어떤 원소가 앞에 올지 예측 불가능
  • stable sort() 함수로 정렬하면 앞의 원소 순서대로 정렬 가능
  • 정렬 기준은 compare() 함수를 따르는데, 오름차순으로 정렬

✅ 실행 결과

좋은 웹페이지 즐겨찾기