728x90
좌표를 정렬하는 문제입니다.
x를 기준으로 정렬하고
x가 같다면 y를 기준으로 정렬합니다.
vector<pair<int, int>>를 사용하여 값을 넣고
sort함수로 정렬을 합니다.
sort함수에 3번째 인자에 함수를 넣어서
첫번째 수 (x) 가 같으면 y를 기준으로 정렬하도록 하게합니다.
bool compare(pair<int, int>a, pair<int, int>b) {
if (a.first == b.first) {
return a.second < b.second;
}
else {
return a.first < b.first;
}
}
이렇게 정렬된 수를 차례대로 출력해서 문제를 풀었습니다.
#include <iostream>
#include <algorithm>
#include <cstring>
#include <vector>
using namespace std;
bool compare(pair<int, int>a, pair<int, int>b) {
if (a.first == b.first) {
return a.second < b.second;
}
else {
return a.first < b.first;
}
}
int main(int argc, char *argv[])
{
int n;
int x, y;
vector<pair<int, int>> v;
scanf("%d",& n);
for (int i = 0; i < n; ++i) {
scanf("%d", &x);
scanf("%d", &y);
v.push_back(make_pair(x, y));
}
sort(v.begin(), v.end(), compare);
for (int i = 0; i < n; ++i) {
printf("%d %d\n", v[i].first, v[i].second);
}
return 0;
}
'알고리즘' 카테고리의 다른 글
[C++] 백준 1181번 단어 정렬 (0) | 2019.08.31 |
---|---|
[C++] 백준 11651번 좌표 정렬하기 2 (0) | 2019.08.30 |
[C++] 백준 2108번 통계학 (0) | 2019.08.30 |
[C++] 백준 10989번 수 정렬하기3 (2) | 2019.08.30 |
[C++] 백준 2751번 수 정렬하기2 (0) | 2019.08.30 |