본문으로 바로가기

#include <bits/stdc++.h>
using namespace std;
int main()
{
	ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL);
	int n;
	cin >> n;
	vector<pair<int,int>> v1;
	while (n--) {
		int i,j;
		cin >> i >> j;
		v1.push_back(make_pair(i, j));
	}
	sort(v1.begin(), v1.end());
	for (int i = 0; i < v1.size(); i++) {
		cout << v1[i].first << " " << v1[i].second << "\n";
	}
}
 

쌍을 이루는 문제가 있을 경우 pair를 이용하는 것이 좋다.

선언은 vector<pair<type1,type2>> 로 선언해줄 수 있다.

여기서 sort를 사용하게되면, first에 있는 순서로 정렬하다 동일한 결과가 나올경우 second로 재정렬해서 오름차순으로 나타내준다.

따라서 이 문제에서의 핵심은 쌍을 이룬 정렬을 어떻게 표현하느냐를 물어보는 문제이다.