문제설명
소스코드
#include <iostream>
#include <algorithm>
using namespace std;
class XY {
public:
int x; int y;
bool operator < (XY& arr) {
if (this->y < arr.y) return true;
else
{
if ((this->y == arr.y) && (this->x < arr.x)) return true;
else return false;
}
}
};
int main() {
ios_base::sync_with_stdio(false); //표준 스트림 동기화 해제
cin.tie(NULL); //입력과 출력 연결 끊기
int N;
cin >> N;
XY* arr = new XY[N];
for (int i = 0; i < N; ++i) cin >> arr[i].x >> arr[i].y;
sort(arr, arr + N);
for (int i = 0; i < N; ++i) cout << arr[i].x << " " << arr[i].y << '\n';
}
설명
- 클래스 배열로 좌표를 나타냄
- algorithm 라이브러리의 sort() 함수를 올바르게 실행하려면 클래스 내부의 연산자 < 의 재정의(오버라이딩)가 필요함
- y좌표가 작으면 무조건 true를 리턴하고(오름차순)
y좌표가 같고 x가 작으면 true를 리턴한다(오름차순)
이외의 경우는 false를 리턴한다 - 표준 스트림 동기화 해제, 입출력 연결 끊기, endl 대신 '\n'을 사용하여 시간초과를 방지를 한다.
'자료구조 & 알고리즘 > BOJ' 카테고리의 다른 글
[C++] 백준 13단계 - 1181번 문제 (단어 정렬) (0) | 2023.07.20 |
---|---|
[C++] 백준 13단계 - 18870번 문제 (좌표 압축) (0) | 2023.07.19 |
[C++] 백준 13단계 - 10814번 문제 (나이순 정렬) (0) | 2023.07.18 |
[C++] 백준 13단계 - 11650번 문제 (좌표 정렬하기) (0) | 2023.07.18 |
[C++] 백준 10867번 문제 (중복 빼고 정렬하기) (0) | 2023.07.17 |