BOJ - 10814 - 나이순 정렬

ggh·2022년 5월 11일
0

백준

목록 보기
7/112

BOJ - 10814 - 나이순 정렬

문제


SOL


  • 나이순으로 정렬 후 나이가 같으면 가입순으로 정렬
    • 2중 pair를 사용하여 <가입번호(int), 나이(int), 이름(int)> 커스텀 자료형 생성

      vector<pair<int, pair<int, string>>> m_list;

    • compare를 사용하여 나이순 정렬 후 가입순 정렬
      bool compare(pair<int, pair<int, string>> a,
                   pair<int, pair<int, string>> b)
      {
          if(a.second.first == b.second.first)
              return a.first < b.first;
          return a.second.first < b.second.first; 
      }

정답 소스


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

using namespace std;

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

int main()
{
    int num;
    int old;
    char name[101];
    vector<pair<int, pair<int, string>>> m_list;
    scanf("%d", &num);
    for(int i=0; i < num; i++)
    {
        scanf("%d%s",&old ,name);
        m_list.push_back(pair<int, pair<int, string>>(i, make_pair(old, name)));
    }
    sort(m_list.begin(), m_list.end(), compare);
    for(int i=0; i < m_list.size(); i++)
        printf("%d %s\n", m_list[i].second.first, m_list[i].second.second.c_str());
}

출력


3
21 Junkyu
21 Dohyun
20 Sunyoung
-----
20 Sunyoung
21 Junkyu
21 Dohyun

Reference & 다른 PS 모음집


C++ STL sort ( )

https://github.com/ggh-png/PS

profile
See you in a minute. : )

0개의 댓글