
https://www.acmicpc.net/problem/11650
문제 푼 시간 : 13분
정렬 규칙
=> pair을 사용하여 x,y 값을 vector에 저장한 후 sort를 사용하여 정렬해야겠다!
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
//바교 함수
bool com(pair<int,int> p1, pair<int,int> p2){
if(p1.first == p2.first)return p1.second < p2.second; //x좌표 비교 후 x좌표 같으면 y좌표 비교하여 정렬
else return p1.first < p2.first;//x좌표 다르면 x좌표 기준으로 정렬
}
int main(void){
int N; //점의 개수 입력
cin>>N;
vector<pair<int, int> > v; //점들 저장할 벡터
for(int i=0;i<N;i++){
int a,b;
cin>>a>>b;
v.push_back(make_pair(a,b)); //x,y좌표 벡터에 추가
}
//비교 함수를 이용하여 벡터 정렬
sort(v.begin(),v.end(),com);
for(int i=0;i<N;i++){
cout<<v[i].first<<" "<<v[i].second<<'\n';
}
}

이 문제를 기록하면서 알았는데 sort()함수는 기본적으로 pair의 first를 우선으로, 그 후에 second를 비교하므로 정렬하여서 별도의 비교함수를 구현하지 않아도 되었다..!
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
int main(void){
int N;
cin>>N;
vector<pair<int, int> > v;
for(int i=0;i<N;i++){
int a,b;
cin>>a>>b;
v.push_back(make_pair(a,b));
}
sort(v.begin(),v.end());
for(int i=0;i<N;i++){
cout<<v[i].first<<" "<<v[i].second<<'\n';
}
}
