#include <iostream>
#include <utility>
#include <vector>
#include <algorithm>
using namespace std;
bool compare(pair<long, long> a, pair<long, long> b){
if(a.second < b.second){
return true;
} else if (a.second == b.second){
return a < b;
} else {
return false;
}
// if (a.second == b.second) {
// return a.first < b.first;
// }
// else {
// return a.second < b.second;
// }
}
int main(int argc, char **argv){
int N;
scanf("%d",&N);
vector<pair<long, long> > arr; // [N]으로 개수 제한 x
pair<long, long> tmp;
for(int i=0; i<N; i++){
cin >> tmp.first >> tmp.second;
arr.push_back(tmp);
}
sort(arr.begin(), arr.end(), compare);
for(int i=0; i<arr.size(); i++){
cout << arr[i].first << " " << arr[i].second << "\n";
}
return 0;
}
앞서 배웠던 것을 바탕으로 혼자서 문제를 풀어 맞출 수 있었다! 야호!
하지만 sort의 compare 함수는 주석처리한 코드가 훨씬 더 효율적으로 보인다. 만약 y좌표의 값이 같은 경우에는 x좌표가 더 작은 것을 반환하고, 아닌 경우에는 y좌표의 값이 적은 것을 반환하도록 말이다.