백준 11650_좌표 정렬하기 [C++]
본문 바로가기
Algorithm/Python, C++

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

by liveloper jay 2022. 7. 16.

문제

 

풀이

 이 문제는 x축 y축의 값을 입력받아 x축을 기준으로 정렬을 진행하되, x축의 값이 동일할 경우 y축의 값을 기준으로 정렬하는 문제입니다. 그냥 보았을 때는 이차원 배열로 입력받아 sort 함수를 이용하여 풀이를 진행하면 될 것 같지만, 이차원 배열을 sort 함수를 이용하여 정렬할 경우 오류가 발생하여 정렬할 수 없습니다.

 이럴때는 vector를 이용하고, vector에서  pair<>를 이용하여 값을 쌍으로 저장해주면 쉽게 해결할 수 있습니다. 먼저 쌍의 값을 저장할  vector <pair<int,int>> v 를 선언해주고 두 개의 값을 입력받을 때마다 vector v에 저장해줍니다. 모두 입력받았으면 sort 함수를 이용하여 정렬을 해주면 됩니다. 소스코드는 아래와 같습니다.

 

 

소스코드

#include <iostream>
#include <vector> 
#include <algorithm>
using namespace std;
int main()
{    vector <pair<int,int>> v;
    int a,b;
    int num;
    cin>>num;
    while(num--){
        cin >> a >> b;
        v.push_back(make_pair(a,b));
    }
    
    sort(v.begin(),v.end());
    
    for(int i=0; i<v.size(); i++){
        cout << v[i].first<<" "<<v[i].second << "\n";
    }
}

 

 

댓글