[백준] 11650 좌료 정렬하기 / 정렬 (C++)

sobokii·2023년 10월 18일
0

문제풀이

목록 보기
8/52

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;
}
profile
직장 구하고 있습니다.

0개의 댓글