#include<iostream>
#include<algorithm>
using namespace std;
typedef struct point
{
int x;
int y;
} mpoint;
//bool xcompare(mpoint a, mpoint b)
//{
// return(a.x < b.x);
//}
bool ycompare(mpoint a, mpoint b)
{
if (a.y < b.y)
return true;
else if (a.y == b.y)
{
if (a.x < b.x)
return (true);
}
return false;
}
int main()
{
int point_num;
cin >> point_num;
mpoint * position = new mpoint [point_num];
for (int i = 0; i < point_num; i++)
{
cin >> position[i].x >> position[i].y;
}
// sort(position, position + point_num, xcompare);
// for (int i = 0; i < point_num; i++)
// cout<< position[i].x<<"??? " << position[i].y << "\n";
sort(position, position+ point_num, ycompare);
for (int i = 0; i < point_num; i++)
cout<< position[i].x<<" " << position[i].y << "\n";
}
sort 함수의 그동안 2번째 인자만 주고 사용했는데 3번째 인자로 함수를 만들어서 함수포인터를 전달하면 우리는 그 함수를 이용해 리턴값에 따라서 정렬을 할 수가 있다.
그 함수의 리턴값이 1일때는 우리는 따로 바꾸지 않고 리턴값이 0 즉 false 일때만 우리는 바꿔준다. 위의 경우는 구조체에서 값을 바꿔서 해결하였다.
728x90
'알고리즘 기초시절' 카테고리의 다른 글
백준 c++1654번 랜선 자르기 문제 (0) | 2023.01.05 |
---|---|
백준 c++백준 7568 덩치 클래스 복습 (2) | 2023.01.05 |
백준 c++백준 1620번 포켓몬마스터 이다솜 (0) | 2023.01.05 |
백준 (C언어)백준 1157번 단어 공부 (0) | 2023.01.05 |
백준 (C언어)백준 1152번 단어의 갯수 scanf ("%[^\n]") (0) | 2023.01.04 |