Notice
Recent Posts
Link
«   2024/11   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
Archives
관리 메뉴

이우의 개발일지

[C/C++] 백준 11651번 좌표 정렬하기2 -(1) 본문

Coding

[C/C++] 백준 11651번 좌표 정렬하기2 -(1)

공대이우 2024. 10. 8. 14:15

백준 11651번 좌표 정렬하기 문제

 

이 문제는 간단하게 y좌표를 오림차순으로 정렬하고, 만약 y좌표가 같다면 x좌표의 오름차순으로 정렬하는 문제이다.

 

간단하게 x,y 를 동시에 받을려면 pair 를 써서 x,y를 한 묶음으로 저장해놓는다.

 

또한, sort 함수를 쓰는데 이때 x를 따지는 것이 아닌 y를 따지고, y가 같다면 x를 따져야하기 때문에 sort함수에 넣을 조건문을 따로 써준다.

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

 

이런식으로 따로 쓰면 되는데, 자주 나오는 개념이니 까먹지 않는 것이 좋다.

 

11651번 좌표 정렬하기 C++ 전체 코드 

#include <iostream>
#include <cstdlib>  // system() 함수가 선언된 헤더
#include <algorithm>
#include <vector>

using namespace std;

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

int main() {
    
    int n;
    cin >> n;

    vector<pair<int, int>> vec;

    for (int i = 0; i < n; i++) {
        int num1, num2;

        cin >> num1 >> num2;

        vec.push_back({num1, num2});
    }

    sort(vec.begin(), vec.end(), comp);


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

    return 0;
}

 

반응형