2차원 평면 위의 점 N개가 주어진다. 좌표를 x좌표가 증가하는 순으로, x좌표가 같으면 y좌표가 증가하는 순서로 정렬한 다음 출력하는 프로그램을 작성하시오.
좌표 구조체를 만든 후에 오름차순 정렬에 대한 정의를 해주었다.
처음에 습관적으로 vector vInput(n); 으로 사이즈를 정의하려고 했는데,
이 경우 구조체에 인자가 없는 생성자가 없기 때문에 미리 사이즈를 잡아서 생성해주지를 못하는 오류가 있었다.
다른 사람이 푼 걸 보니 set을 활용해서 자동으로 정렬한 사람도 있더라 굳
그리고 애초에 sort하면 저대로 정렬이 되는 듯...
pair<int, int> 해서 그냥 sort한 사람이 대부분이었다.
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
struct Pos
{
int x;
int y;
Pos(int a, int b)
{
x = a;
y = b;
}
bool operator<(const Pos& b) const
{
if (x == b.x)
{
return y < b.y;
}
else
{
return x < b.x;
}
}
};
int main()
{
ios_base::sync_with_stdio(false);
cin.tie(NULL);
int n, x, y;
cin >> n;
vector<Pos> vInput;
for (int i = 0; i < n; i++)
{
cin >> x >> y;
vInput.push_back(Pos(x, y));
}
sort(vInput.begin(), vInput.end());
for (int i = 0; i < n; i++)
{
cout << vInput[i].x << " " << vInput[i].y << "\n";
}
return 0;
}