728x90
반응형

블로그에 올리는 모든 문제 풀이는 깃허브에 올려져 있습니다.


문제 설명

  • 2차원 평면 위의 점 N개(1 <=N <=100,000)가 주어진 뒤 좌표의 x, y(-100,000 <=x, y <=100,000)가 주어진다.
  • 좌표를 y좌표가 증가하는 순으로, y좌표가 같으면 x좌표가 증가하는 순서로 정렬한 다음 출력하는 프로그램을 작성하시오.

풀이 전략

  • a와 b의 값을 비교하여 정렬 후 출력한다.

소스 코드

#include <iostream>
#include <algorithm>
#include <vector>

using namespace std;
bool Comp(pair<int, int> a, pair<int, int> b)
{
	if (a.second < b.second)
		return true;
	else if (a.second == b.second)
	{
		if (a.first < b.first)
			return true;
	}

	return false;
}
int main()
{
	int n;
	vector<pair<int,int>> vec;

	cin >> n;
	for (int i = 0; i < n; ++i)
	{
		int x, y;
		cin >> x >> y;
		vec.push_back(make_pair(x,y));
	}

	sort(vec.begin(), vec.end(), Comp);
	for (int i = 0; i < n; ++i)
	{
		cout << vec[i].first << ' ' << vec[i].second << '\n';
	}
}

링크

https://www.acmicpc.net/problem/11651

 

11651번: 좌표 정렬하기 2

첫째 줄에 점의 개수 N (1 ≤ N ≤ 100,000)이 주어진다. 둘째 줄부터 N개의 줄에는 i번점의 위치 xi와 yi가 주어진다. (-100,000 ≤ xi, yi ≤ 100,000) 좌표는 항상 정수이고, 위치가 같은 두 점은 없다.

www.acmicpc.net

 

728x90
반응형

'문제풀이 > BOJ' 카테고리의 다른 글

[C++ 백준] 1181 단어 정렬  (0) 2021.08.26
[C++ 백준] 18870 좌표 압축  (0) 2021.08.18
[C++ 백준] 1929 소수 구하기  (0) 2021.06.13
[C++ 백준] 1065 한수  (0) 2021.06.12
[C++ 백준] 1002 터렛  (0) 2021.06.09