백준 algorithm

백준 10814 - 나이순 정렬

cosmohoo 2020. 7. 23. 20:07
반응형

문제 설명 

 

=> pair형 vector 두 개를 사용해서 풀었습니다. 

=> DB속 정규화 개념을 이용해 풀었습니다. 

=> 입력되어지는 순서를 테이블 A와 B가 공유하는 값으로 설정하고, <seq, age> <seq, name> 형 pair를 생성하였습니다. 

 

 

https://codingham.tistory.com/184

 

백준 11650 - 좌표 정렬하기

=> pair와 sort 함수를 사용할 줄 아는지 묻는 문제입니다. => x좌표와 y좌표는 같이 움직여야하는 하나의 객체이므로, 클래스로 표현하여도 되지만, 이미 c++ 에는 pair가 있습니다. => pair를 사용해서

codingham.tistory.com

=> 좌표 정렬하기에서 사용한 비교 함수를 사용해서 <seq, age>를 정렬한 후, 원하는 값을 출력하였습니다. 

 

 

<code> 

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


using namespace std;

bool cmp(const pair<int, int> &a, const pair<int, int> &b)
{
   if (a.second == b.second) {
        return a.first < b.first;
    }
    else {
        return a.second < b.second;
    }
}

int main()
{
    ios_base::sync_with_stdio(false);
    cin.tie(nullptr);
    cout.tie(nullptr);
   
    int N;
    cin >> N;
    vector<pair<int, int>> Num_Age;
    vector<pair<int, string>> Num_Name;
    
    int seq=0;
    
    for(int i=0; i<N; i++)
    {
        int age;
        cin >> age;
        string name;
        cin >> name;
        
        pair<int, int> tmp = make_pair(seq, age);
        pair<int, string> tmp2 = make_pair(seq++, name);
        Num_Age.push_back(tmp);
        Num_Name.push_back(tmp2);
    }
    
    sort(Num_Age.begin(), Num_Age.end(),cmp);
    
    for(int i=0; i<Num_Age.size(); i++)
    {
        cout << Num_Age[i].second << " "<<Num_Name[Num_Age[i].first].second<<'\n';
    }
    
    
    return 0;
}

 

 

실행 화면 

반응형