728x90
반응형

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


문제 설명

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

풀이 전략

  • x, y 좌표의 맵핑
  • 정렬 기준
    1. x좌표 정렬
    2. (x좌표 동일 시) y좌표 정렬
  • 10814번 문제와 유사하다.
    하지만 이번엔 multimap이 아닌 vector의 타입으로 pair를 사용하고, sort를 커스텀해서 풀어보았다.

소스 코드

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

using namespace std;

bool compare( pair<int, int> a, pair<int, int> b )
{
	if ( a.first == b.first )
		return a.second < b.second;

	return a.first < b.first;
}
int main()
{
	vector<pair<int, int>> vec;

	int n;
	int x, y;
	cin >> n;

	for ( int i = 0; i < n; i++ )
	{
		cin >> x;
		cin >> y;

		vec.push_back( make_pair( x, y ) );
	}

	sort( vec.begin(), vec.end(), compare );

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

링크

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

 

11650번: 좌표 정렬하기

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

www.acmicpc.net

 

728x90
반응형

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

[C++ 백준] 2751 수 정렬하기 2  (0) 2020.07.22
[C++ 백준] 1874 스택 수열  (0) 2020.07.08
[C++ 백준] 10814 나이순 정렬  (0) 2020.06.25
[C++ 백준] 1546 평균  (0) 2020.03.23
[C++ 백준] 3052 나머지  (0) 2020.03.21