11651번: 좌표 정렬하기 2
첫째 줄에 점의 개수 N (1 ≤ N ≤ 100,000)이 주어진다. 둘째 줄부터 N개의 줄에는 i번점의 위치 xi와 yi가 주어진다. (-100,000 ≤ xi, yi ≤ 100,000) 좌표는 항상 정수이고, 위치가 같은 두 점은 없다.
www.acmicpc.net
#include <iostream>
#include <algorithm>
#include <vector>
using namespace std;
// 정렬 기준
bool yFirst(pair<int,int> x, pair<int,int> y)
{
// y값이 같을 경우에는 x값 오름차순
if(x.second == y.second)
{
return x.first < y.first;
}
// y값 오름차순
else
{
return x.second < y.second;
}
}
int main(void)
{
ios_base::sync_with_stdio(0);
cin.tie(0);
int n = 0;
cin >> n;
vector<pair<int,int>> v;
for(int i = 0 ; i < n ; i++)
{
int x, y;
cin >> x >> y;
v.emplace_back(pair<int,int>(x,y));
}
sort(v.begin(), v.end(), yFirst);
for(int i = 0 ; i < n ; i++)
{
cout << v[i].first << " " << v[i].second << '\n';
}
}
[Try]
1. 페어 사용해서 정렬하기
2. 정렬할 기준 함수 정의해주기
[Point]
1. 정렬에 주는 키 조건에 y값만 비교할 경우 y값이 같을 때는 입력된 순서 그대로 나오기 때문에, y값이 같을 경우 x 값에 따른 정렬도
주어야 한다.
2. set을 사용해서 자동 정렬되게끔 하신 분도 계심
3. 굳이 정렬할 때 기준을 줄 필요 없이, 페어를 만들 때 y값을 first 로 넣으면 자동으로 정렬이 되는 거였다..!!
[More]
1. 벡터 말고 배열로도 사용해보기
'PS > BOJ' 카테고리의 다른 글
[백준] 10989.cpp : 수 정렬하기 3 (0) | 2020.05.15 |
---|---|
[백준] 2108.cpp : 통계학 (0) | 2020.05.15 |
[백준] 7568.cpp : 덩치 (0) | 2020.05.14 |
[백준] 1436.cpp : 영화감독 숌 (0) | 2020.05.13 |
[백준] 11866.cpp : 요세푸스 문제 0 (0) | 2020.05.12 |