본문 바로가기
Algorithm/BackJoon

11650번: 좌표 정렬하기

by 꼬부기가우는소리 2023. 6. 5.
728x90

 

- 관련 사이트: 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

 

입력받은 x, y 좌표를 아래의 조건으로 정렬하는 문제이다.

1) x 좌표를 기준으로 오름차순

2) x 좌표가 동일할 경우, y 좌표를 기준으로 오름차순

 

sort 함수를 이용하되, 비교 기준을 직접 설정할 수 있도록 compare 함수를 선언하여 적용해주었다.

 

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

bool compare(pair<int, int> prev, pair<int, int> next)
{
    if (prev.first == next.first)
        return prev.second < next.second;
    else
        return prev.first < next.first;
}

int main()
{
    int N, x, y;
    vector<pair<int, int>> xy;
    cin >> N;
    while (N > 0)
    {
        cin >> x >> y;
        xy.push_back(pair<int, int>(x, y));
        N--;
    }

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

    for (pair<int, int> p : xy)
        cout << p.first << " " << p.second << "\n";
    return 0;
}

- 메모리: 3572 KB

- 시간: 120 ms

- 코드 길이: 593 B

728x90

'Algorithm > BackJoon' 카테고리의 다른 글

10989번: 수 정렬하기 3  (0) 2023.06.06
2751번: 수 정렬하기 2  (0) 2023.06.06
11651번: 좌표 정렬하기 2  (0) 2023.06.05
9935번: 문자열 폭발  (0) 2023.06.04
2750번: 수 정렬하기  (0) 2023.06.04

댓글