백준 링크 : https://www.acmicpc.net/problem/11650

문제 개요

2차원 평면 위의 점 N개가 주어지고, 좌표를 x좌표가 증가하는 순으로, x좌표가 같으면 y좌표가 증가하는 순서로 정렬한 다음 출력하는 문제이다.

아이디어


코드


// 아래의 코드는 dev c++환경에서 동작됩니다.
// visual studio에서는 bit/stdc++.h가 기본적으로 없기 때문에
// 정삭적인 작동이 되지 않을 수 있습니다.
#include <bits/stdc++.h>
using namespace std;

int n, y, x;
vector<pair<int, int> > v;

int main()
{
  ios::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL);
	cin >> n;
	for(int i = 0; i < n; i++)
	{
		cin >> x >> y;
		v.push_back({x, y});
	}
	
	sort(v.begin(), v.end());
	for(auto& val : v) cout << val.first << " " << val.second << "\\n";
  return 0;
}

후기


처음에는 pair구조체의 <연산자 오버로딩이 어떻게 되어있는지 몰라서, 내가 직접 비교함수를 구현했다. 다른 많은글에서도 그랬듯이 몰라서 추가적으로 구현한 것들이 참 많았고, 이번 문제도 그랬다. 그래도 이제는 pair구조체의 <연산자가 어떻게 구현되어있는지 알았으므로, 앞으로 두 값을 순서대로 오름차순 정렬하는 문제에서는 pair 구조체를 통해 문제를 해결할 것이다.