백준 11651_좌표 정렬하기 2 [C++]
본문 바로가기
Algorithm/Python, C++

백준 11651_좌표 정렬하기 2 [C++]

by liveloper jay 2022. 7. 18.

문제

 

 

풀이

 이 문제는 좌표 정렬하기 문제와 같이 오름차순으로 정렬하면 되는 문제이나, x축 기준이 아닌 y축 기준으로 먼저 정렬 후, y축이 같으면 x축 기준으로 정렬하는 문제입니다. 따라서 sort 함수로 정렬을 하되, 정렬하는 방식에 대해서는 따로 함수를 만들어 주어 vector의 second 값부터 비교하여 정렬하고, 만약 second 값이 같은 경우 first 값을 기준으로 정렬하는 방식으로 풀이를 해주면 됩니다. 소스코드는 아래와 같습니다.

 

 

소스코드

#include <iostream>
#include <vector> 
#include <algorithm>
using namespace std;
bool cmp(pair<int, int> a, pair<int, int> b)
{   
    if(a.second < b.second) return true;
    else if(a.second==b.second){
        if(a.first<b.first) return true;
    }return false;
}int main()
{   vector <pair<int,int>> v;
    int a,b;
    int num;
    cin>>num;
    while(num--){
        cin >> a >> b;
        v.push_back(make_pair(a,b));
    }
    
    sort(v.begin(),v.end(),cmp);
    
    for(int i=0; i<v.size(); i++){
        cout << v[i].first<<" "<<v[i].second << "\n";
    }
    return 0;
}

 

댓글