알고리즘/백준

백준 11650 좌표 정렬하기 c++ [컴공과고씨]

시간빌게이츠 2022. 4. 12. 23:06
반응형

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

pair로 받아서 정렬 기준을 바꾸어 주면 된다.

vector를 잘 모르면 https://hagisilecoding.tistory.com/53?category=1050177 공부하고 오면 이해하기 편하다.

 

전체코드

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
#include <vector>
#include <iostream>
#include <algorithm>
using namespace std;
 
bool cmp(pair<intint> p1, pair<intint> p2){
    if(p1.first == p2.first){ // 첫 좌표가 같을 경우
        return p1.second < p2.second; // 2번째 좌표로 비교
    }else{
        return p1.first < p2.first;
    }
    
}
 
int main(){
    int n, x, y;
    cin >> n;
    vector<pair<intint>> v;
    for (int i = 0; i < n;i++){
        cin >> x >> y;
        v.push_back(make_pair(x, y));
    }
    sort(v.begin(), v.end(), cmp); // 정렬 
    for (int i = 0; i < n; i++){
        cout << v[i].first << " " << v[i].second << '\n';
    }
 
    return 0;
}// 11min
cs
체감난이도 걸린시간 참고 사용 문법
11min x 벡터 정렬
반응형