cpp) 백준 11650: 좌표 정렬하기
본문 바로가기
코딩 테스트/백준 (C++, Python)

cpp) 백준 11650: 좌표 정렬하기

by NEWSUN* 2023. 6. 8.

Problem

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

 

11650번: 좌표 정렬하기

첫째 줄에 점의 개수 N (1 ≤ N ≤ 100,000)이 주어진다. 둘째 줄부터 N개의 줄에는 i번점의 위치 xi와 yi가 주어진다. (-100,000 ≤ xi, yi ≤ 100,000) 좌표는 항상 정수이고, 위치가 같은 두 점은 없다.

www.acmicpc.net

2차원 평면에 점 N개가 주어졌다고 하자. 좌표를 x좌표가 증가하는 순으로, x좌표가 같다면 y좌표가 증가하는 순서로 정렬하시오.
 
 

Solution

#include<iostream>
#include<algorithm>

using namespace std;

struct info{
    int x;
    int y;
};

// 앞에 오는 a보다 뒤에오는 b가 더 크도록, 오름차순 정렬
bool check(info a, info b){
    if(a.x < b.x)
        return true;
    else if (a.x == b.x)
        if (a.y < b.y)
            return true;
    return false;
}

int n;
info arr[100001];

int main(){
    ios::sync_with_stdio(0);
	cin.tie(0); cout.tie(0);

    cin >> n;

    for(int i=0;i<n;i++)
        cin >> arr[i].x >> arr[i].y;
    sort(arr, arr+n, check);

    for(int i=0;i<n;i++)
        cout << arr[i].x << ' ' << arr[i].y << '\n';
    
    return 0;
}

 
- 좌표값 x, y를 가지고 있는 구조체 info를 만든다.
- arr이라는 이름의 구조체 배열을 만든다.
- sort(시작 주소, 끝 주소, 정렬 조건)