문제 풀이/BOJ 문제 풀이
[BOJ알고리즘, C++]#11650 좌표 정렬하기
Hardii2
2022. 2. 2. 19:36
[BOJ 알고리즘, C++] #11650 좌표 정렬하기
BOJ 알고리즘 문제 풀이, 11650번 문제: 좌표 정렬하기
입력받은 좌표들을 우선 조건과 차선 조건으로 정렬합니다.
문제
정렬 함수, Comparison
"sort()"는 기본적으로 세 개의 매개변수를 받습니다. 마지막 매개 변수로 사용자 정의 함수를 받습니다. 사용자 정의 함수는 "BOOL" 타입을 반환하는 함수로, i와 j, 혹은 앞 선 원소와 바로 뒤의 원소를 사용자가 원하는 기준으로 오름차순 정렬인지 혹은 내림차순 정렬인지 sort 함수에게 알려줍니다.
풀이 과정
1. <utility> 헤더 파일을 추가하고, pair 클래스를 생성합니다.
2. vector<pair<int, int>>를 통해 벡터를 생성합니다.
3. sort 함수를 사용하여, 오름차순으로 정렬합니다. 이때, 정렬 함수를 사용합니다.
4. 정렬 함수의 경우, 먼저 X값을 우선적으로 비교하고, 같다면 Y값을 비교하는 차선 조건을 작성.
코드 작성
#include <iostream>
#include <utility>
#include <vector>
#include <algorithm>
using namespace std;
bool comp(pair<int, int>a,
pair<int, int> b)
{
// x 좌표가 같으면, y를 오름차순 -> 차선 조건
if(a.first == b.first)
{
return a.second < b.second;
}
// x 좌표가 같지 않으면, x를 오름차순 -> 우선 조건
return a.first < b.first;
}
int main ()
{
int N, x=0, y=0;
cin >> N;
vector<pair<int, int>> vv;
for(int i=0; i<N; i++)
{
cin >> x >> y;
vv.push_back(make_pair(x, y));
}
sort(vv.begin(), vv.end(), comp);
for(auto x: vv)
{
cout << x.first << " " << x.second << '\n';
}
}