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

Kim Nahyeong·2022년 1월 7일
0

백준

목록 보기
44/157

#include <iostream>
#include <utility>
#include <vector>
#include <algorithm>
using namespace std;

bool compare(pair<long, long> a, pair<long, long> b){
    if(a.second < b.second){
        return true;
    } else if (a.second == b.second){
        return a < b;
    } else {
        return false;
    }
    // if (a.second == b.second) {
    //     return a.first < b.first;
    // }
    // else {
    //     return a.second < b.second;
    // }
}

int main(int argc, char **argv){
    int N;
    scanf("%d",&N);
    vector<pair<long, long> > arr; // [N]으로 개수 제한 x
    pair<long, long> tmp;

    for(int i=0; i<N; i++){
        cin >> tmp.first >> tmp.second;
        arr.push_back(tmp);
    }

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

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

    return 0;
}

오늘의 키포인트

  • 앞서 배웠던 것을 바탕으로 혼자서 문제를 풀어 맞출 수 있었다! 야호!

  • 하지만 sort의 compare 함수는 주석처리한 코드가 훨씬 더 효율적으로 보인다. 만약 y좌표의 값이 같은 경우에는 x좌표가 더 작은 것을 반환하고, 아닌 경우에는 y좌표의 값이 적은 것을 반환하도록 말이다.

0개의 댓글