백준 단계별로 풀어보기 [정렬] 좌표 정렬하기
https://www.acmicpc.net/problem/11650
[풀이]
STL의 sort를 이용해서 풀었다. sort(begin, end, pred)의 3가지 인자를 전달하는데, pred 자리에는 특정한 조건을 추가 인자로 받는다. 여기서는 두 x좌표가 같은 경우 y 좌표가 증가하는 순서대로 정렬되게끔하고 그 외의 경우에는 x좌표의 크기에 따라 정렬하는 bool 함수 cmp를 전달하였다.
마지막 줄의 출력에서 std::endl을 사용하면 시간초과가 뜨는데, 이를 "\n"으로 수정하니 괜찮아졌다...
[코드]
#include <iostream>
#include <algorithm>
typedef struct{
int x, y;
}Point;
bool cmp(const Point& a, const Point& b) {
if (a.x == b.x)
return a.y < b.y;
else return a.x < b.x;
}
int main() {
int n;
std::cin >> n;
Point* point = new Point[n];
for (int i = 0; i < n; i++)
std::cin >> point[i].x >> point[i].y;
std::sort(point, point + n, cmp);
for (int i = 0; i < n; i++)
std::cout << point[i].x << " " << point[i].y << "\n";
return 0;
}
'알고리즘 공부 및 문제 풀이 > 백준(BOJ)' 카테고리의 다른 글
[c++] 백준 1181 단어 정렬 (0) | 2021.07.18 |
---|---|
[c++] 백준 10814 나이순 정렬 (0) | 2021.07.15 |
[c++] 백준 2750 수 정렬하기 (0) | 2021.07.13 |
[c++] 백준 2798 블랙잭 (0) | 2021.07.13 |
[c++] 백준 2232 분해합 (0) | 2021.07.12 |