궤도

[백준] 11650번 : 좌표 정렬하기 본문

💻 현생/⛓ 알고리즘

[백준] 11650번 : 좌표 정렬하기

영이오 2020. 10. 15. 22:41

문제

 


풀이

 

sort 함수에는 사실 3번째 인자가 있다. 이 3번째 인자를 통해 정렬의 조건을 입맛대로 바꿀 수 있다. 이 인자는 bool을 리턴하는 함수인데, 요구하는 인자의 형식이 중요하다. 그건 아래 코드를 보면 알 수 있다. 사용법도 코드의 주석에 써놓아서 여기에 또 쓸말이 없다. 아무튼 sort 함수는 참 좋다.


소스코드

 

#include <iostream>
#include <algorithm>
using namespace std;

struct point {
	int x, y;
};

bool cmp(const point& p1, const point& p2) { //p1이 p2보다 앞에 있어야하는 조건
	if (p1.x < p2.x)
		return true;
	else if (p1.x == p2.x)
		return p1.y < p2.y;
	else
		return false;
}

int main() {
	int N, i;

	cin >> N;
	point* arr = new point[N];
	for (i = 0; i < N; i++)
		cin >> arr[i].x >> arr[i].y;
	sort(arr, arr + N, cmp); //구조체처럼 복잡한 비교는 세번째 인자를 건네줘서 할 수 있음
	for (i = 0; i < N; i++)
		cout << arr[i].x << ' ' << arr[i].y << '\n';
}
Comments