끄적끄적 코딩
article thumbnail
728x90

좌표를 정렬하는 문제입니다.

x를 기준으로 정렬하고
x가 같다면 y를 기준으로 정렬합니다.

vector<pair<int, int>>를 사용하여 값을 넣고
sort함수로 정렬을 합니다.
sort함수에 3번째 인자에 함수를 넣어서
첫번째 수 (x) 가 같으면 y를 기준으로 정렬하도록 하게합니다.

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


이렇게 정렬된 수를 차례대로 출력해서 문제를 풀었습니다.

 

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

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

int main(int argc, char *argv[])
{
	int n;
	int x, y;
	vector<pair<int, int>> v;

	scanf("%d",& n);

	for (int i = 0; i < n; ++i) {
		scanf("%d", &x);
		scanf("%d", &y);

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

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

	for (int i = 0; i < n; ++i) {
		printf("%d %d\n", v[i].first, v[i].second);
	}

	return 0;
}

검색 태그