[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';
}
}
'문제 풀이 > BOJ 문제 풀이' 카테고리의 다른 글
[BOJ알고리즘, C++]#15649 N과 M(1), 깊이 정렬, DFS (0) | 2022.02.12 |
---|---|
[BOJ알고리즘, C++]#10814 나이순 정렬 (0) | 2022.02.02 |
[BOJ알고리즘, C++]#1181 단어 정렬 (0) | 2022.02.02 |
[BOJ알고리즘, C++]#1427 소트 인사이드 (0) | 2022.02.02 |
[BOJ알고리즘, C++]#2751 수 정렬하기 2 (0) | 2022.02.02 |