https://www.acmicpc.net/problem/11651
x, y 좌표 두 개가 필요해서 이차원 배열을 활용하는 방법도 있지만, pair 자료형을 사용해봤다.
약간 특이한 점이 있다면, y좌표를 기점으로 둬야한다는 것이다.
그렇기에 기존의 sort함수를 활용할 때 추가적인 기능을 같이 넣어줘야한다.
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
bool compare(pair<int, int> a, pair<int, int> b)
{
if (a.second == b.second)
return a.first < b.first;
else
return a.second < b.second;
}
int main()
{
std::cin.tie(NULL);
std::ios::sync_with_stdio(false);
int n;
cin >> n;
std::vector<std::pair<int, int>> v(n);
for (int i = 0; i < n; i++)
cin >> v[i].first >> v[i].second;
sort(v.begin(), v.end(), compare);
for (int i = 0; i < n; i++)
cout << v[i].first << ' ' << v[i].second << '\n';
return 0;
}
sort 함수 활용할 때 이렇게 추가적인 함수를 선언하는 경우를 문제 풀면서 종종 보는 것 같다.
기억하자..!!
'백준 문제풀이 > 실버5' 카테고리의 다른 글
백준 2941번 - 크로아티아 알파벳 (0) | 2022.05.28 |
---|---|
백준 1312번 - 소수 (0) | 2022.03.10 |
백준 7568번 - 덩치 (0) | 2022.02.15 |
백준 1476번 - 날짜 계산 (0) | 2022.01.16 |
백준 10814번 - 나이순 정렬 (p.s. 배울 게 많군) (0) | 2021.12.17 |