본문 바로가기
Algorithm/BackJoon

11651번: 좌표 정렬하기 2

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

 

관련 사이트: https://www.acmicpc.net/problem/11651

 

11651번: 좌표 정렬하기 2

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

www.acmicpc.net

 

"11650번: 좌표 정렬하기" 문제에서 조건만 조금 변경된 문제이다.

비교 기준이 y 이므로, pair.first 가 아닌 pair.second 기준으로 비교가 수행될 수 있도록 하였다.

 

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

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

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

- 시간: 116 ms

- 코드 길이: 595 B

 

추가적으로 아래의 두 줄을 추가해주면 C와 C++ 버퍼가 분리되므로 속도를 더 줄여줄 수 있다.

ios_base::sync_with_stdio(false);

cin.tie(NULL);

 

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

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

int main()
{
    ios_base::sync_with_stdio(false);
    cin.tie(NULL);
    
    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;
}

- 메모리: 3688 KB

- 시간: 48 ms

- 코드 길이: 644 B

 

* 연관 문제

- 11650번: 좌표 정렬하기

728x90

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

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

댓글