반응형

 

 

<코드>

#include<iostream>
#include<algorithm>
#include<vector>
using namespace std;

int main()
{
	int N;
	cin >> N;
	vector<vector<int>> coordinate(N, vector<int>(2, 0));
	for (int i = 0; i < N; i++)
	{
		cin >> coordinate[i][1];
		cin >> coordinate[i][0];
	}

	sort(coordinate.begin(), coordinate.end());

	for (int i = 0; i < N; i++)
	{
		cout << coordinate[i][1] << " " << coordinate[i][0] << "\n";
	}

}

 

문제는 2차원 배열을 사전식으로 배열하듯이 y좌표를 기준으로 정렬하고 y좌표값이 같을 경우 x좌표값을 비교하여 정렬한다. 2차원 배열이기 때문에 단순하게 2차원 배열을 만들어서 sort() 함수로 정렬 시 오류가 발생한다. 따라서 vector 컨테이너를 사용하여 정렬을 한다.

더보기

1. 일반 vector 생성자는 배열의 사이즈, 초기값을 쓴다.

vector<int> arr(10,0); // 10의 크기를 0으로 초기화.

 

2. 이중 vector도 비슷하게 초기화하여 만들 수 있다.

vector <vector <int>> arr(10, vector <int>(10,0));

// 10의 크기를 vector<int>(10,0)으로 초기화. 즉, 10행 10열의 이중 배열이 생성된다. 

vector는 C++의 표준 라이브러리 STL(Standard Template Library)에 있는 컨테이너이며 생성 시 메모리 Heap에 생성되며 동적으로 할당된다. 속도측면에서는 배열에 비해 성능은 떨어지나, 메모리를 효율적으로 관리하고 예외처리가 쉽다는 장점을 가지고 있다.

 

 

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

 

반응형

+ Recent posts