[C++] 백준 11650 : 좌표 정렬하기

Kim Nahyeong·2022년 1월 7일
0

백준

목록 보기
43/157

#include <iostream>
#include <vector>
#include <utility> // pair
#include <algorithm>
using namespace std;

int main(int argc, char **argv){
    int N;
    scanf("%d",&N);
    vector<pair<long, long> > arr;
    pair<long, long> tmp; // 값 입력받을 pair

    for(int i=0; i<N; i++){
        cin >> tmp.first >> tmp.second; // 좌표 입력받기
        arr.push_back(tmp); // 입력받은 pair 벡터에 넣기
    }

    sort(arr.begin(), arr.end()); // 페어의 경우 first가 같으면 second로 비교하게끔 이미 sort함수에서 구현
   
    for(int i = 0; i < arr.size(); i++){
        cout << arr[i].first << " " << arr[i].second << "\n"; // endl 시간초과
    }

    return 0;
}

오늘의 키포인트

  • 무수히 많은 시간 초과의 오류를 거쳐서 탄생한 코드. 인터넷을 참 많이도 뒤졌다.

  • utility 헤더를 통해 pair를 구현할 수 있다. sort함수를 이용하면 first가 같으면 second로 비교하기에 sort함수를 이용해서 간단히 구현할 수 있다.

  • cin과 endl은 시간이 오래 걸리므로 적게 사용하는 것이 좋다. 한번에 여러개를 입력받을 수 있도록 하고, endl대신 '\n'를 사용하자.

  • scanf로 벡터를 입력받을 수 없다. pair로 이루어졌기 때문이다. pair 데이터로 입력을 받은 후에 arr에 값을 push_back하여 집어넣어주기로 하자.

0개의 댓글