반응형
백준 - 단계별로 풀어보기 [11651]
https://www.acmicpc.net/problem/11651
문제
풀이
이번에는 페어에서 second를 기준으로 정렬하는 문제이다.
이런 경우에는 기본 sort를 쓰지 않고 compare함수를 정의해서 풀이하면 된다.
코드
#include <iostream>
#include <utility>
#include <algorithm>
#include <vector>
using namespace std;
bool compare(pair<long,long> a, pair<long,long> b)
{
if(a.second == b.second)
return a.first < b.first;
else
return a.second < b.second;
}
int main() {
int num;
cin >> num;
vector<pair<long,long>> arr;
pair<long,long> tmp;
for(int i = 0; i < num; i++)
{
cin >> tmp.first >> tmp.second;
arr.push_back(tmp);
}
sort(arr.begin(),arr.end(),compare);
for(int i = 0; i < num; i++)
cout << arr[i].first << ' ' << arr[i].second << '\n';
}
평가
STL의 sort함수는 compare라는 비교 함수를 직접 인자로 전달할 수 있기 때문에,
필요에 따라서 수정하여 sort를 진행할 수 있다는 사실을 짚고 넘어가면 될 것 같다.
반응형
'Algorithm > Baekjoon BOJ' 카테고리의 다른 글
[백준 / BOJ] - 10814번 나이순 정렬 C++ 풀이 (2) | 2020.03.04 |
---|---|
[백준 / BOJ] - 1181번 단어 정렬 C++ 풀이 (0) | 2020.03.03 |
[백준 / BOJ] - 11650번 좌표 정렬하기 C++풀이 (0) | 2020.03.03 |
[백준 / BOJ] - 1427번 소트인사이드 C++ 풀이 (0) | 2020.03.03 |
[백준 / BOJ] - 2108번 통계학 C++ 풀이 (1) | 2020.03.03 |