문제
y좌표를 기준으로 오름차순 정렬을 해야한다. y좌표가 같으면 x좌표가 증가하는 순서로 정렬한다. y좌표를 기준으로 해야해서 compare함수를 구현안하고 x,y위치를 바꿔서 정렬한 뒤 반대로 출력할까 했지만 이김에 위 링크를 기준으로 compare함수를 구현해보았다.
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
bool compare(pair<int, int>a, pair<int, int>b)
{
if (a.second == b.second) {
return a.first < b.first;
}
else {
return a.second < b.second;
}
}
int main()
{
int n, x, y;
cin >> n;
vector<pair<int, int>> vec(n);
for (int i = 0; i < n; i++) {
cin >> x >> y;
vec[i].first = x;
vec[i].second = y;
}
sort(vec.begin(), vec.end(), compare);
for (int i = 0; i < n; i++) {
printf("%d %d\n", vec[i].first, vec[i].second);
}
return 0;
}
'역시 내 문제해결 알고리즘은 잘못됐다 > 정렬' 카테고리의 다른 글
[백준 2751번] C/C++ (0) | 2020.10.08 |
---|