[C++] 백준 11650 좌표 정렬하기
반응형
1. 서론
정말 쉽다... 정렬만 잘하면 된다. 문제 읽고 코드 치는 데까지 7분 걸린 듯
2. 문제 풀이
여러 좌표들이 주어지는데 그 좌표를 x좌표가 증가하는 순서대로 정렬한다. 만약 x좌표가 같은 경우애는 y좌표가 증가하는 순서대로 정렬한다.
평범한 정렬 문제다. compare만 잘 적을 줄 알면 된다. compare에서 말 그대로 x좌표가 더 큰 순서대로 정렬하고 x값이 같은 경우 y좌표가 더 큰 순서대로 정렬하게 하면 된다.
3. 코드 설명
#include <cstdio>
#include <vector>
#include <algorithm>
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 n, i, x, y;
vector<pair<int, int>> v;
scanf("%d", &n);
for (i = 0; i < n; i++)
{
scanf("%d %d", &x, &y);
v.push_back(make_pair(x, y));
}
sort(v.begin(), v.end(), compare);
for (i = 0; i < n; i++)
printf("%d %d\n", v[i].first, v[i].second);
}
pair로 x와 y좌표 값을 받는다.
그리고 정렬하는데 정렬 시에 compare를 정의해서 오름차순으로 정렬할 수 있게 조건을 걸어준다.
first값이 x고 second 값이 y니까 first를 기준으로 정렬하고 만약 first가 같은 경우 second를 기준으로 정렬하게 해 줬다.
그리고 시간 초과 때문에 scanf, printf를 썼다.
반응형
'Algorithm' 카테고리의 다른 글
[C++] 백준 2003 수들의 합 2 (0) | 2021.03.10 |
---|---|
[C++] 백준 10989 수 정렬하기 3 (0) | 2021.03.01 |
[C++] 백준 10814 나이순 정렬 (0) | 2021.02.27 |
[C++] 백준 1427 소트인사이드 (0) | 2021.02.27 |
[C++] 백준 1920 수 찾기 (0) | 2021.02.22 |