컴퓨터기본/문제풀이

[백준] 10814번: 나이순 정렬

차가운오미자 2021. 9. 11. 17:41

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

 

10814번: 나이순 정렬

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

www.acmicpc.net

문제 이해

1. 나이 증가하는 순으로 정렬

2. 나이가 같으면 먼저 가입한 사람 순으로 정렬

 

정렬 함수를 위의 기준으로 만들면 되는데, 먼저 가입한 순서, 나이, 이름을 저장해야 해서 이중 pair를 사용했다.

 

작성 코드

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

using namespace std;

int N;
vector<pair<int, pair<int, string> > > v;

bool compare(pair<int, pair<int, string> > a, pair<int, pair<int, string> > b){

    if(a.second.first<b.second.first) return true;
    else if(a.second.first == b.second.first){
        if(a.first < b.first) return true;
        else return false;
    }
    else return false;
}

int main(void){
    
    cin >> N;
    for(int i = 0; i<N; i++){
        int tmpi;
        string tmps;
        cin >> tmpi >> tmps;
        v.push_back(make_pair(i, make_pair(tmpi, tmps)));
    }

    sort(v.begin(), v.end(), compare);

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

 

'컴퓨터기본 > 문제풀이' 카테고리의 다른 글

[백준] 15650번: N과 M (2)  (0) 2021.09.13
[백준] 15649번: N과 M(1)  (0) 2021.09.12
[백준] 1181번: 단어 정렬  (0) 2021.09.11
[백준] 11651번: 좌표 정렬하기 2  (0) 2021.09.10
[백준] 11650번: 좌표 정렬하기  (0) 2021.09.10