Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 | 29 |
30 | 31 |
Tags
- 백준 11650
- 안드로이드 미세먼지
- 코틀린 미세먼지
- kotlin fragment
- 수 정렬하기3
- 백준 랜선 자르기
- 나이순 정렬
- 인트로 애니메이션
- 백준 암호제작
- Fragment 이동
- kotlin retrofit
- 백준
- 코틀린 공공데이터
- 좌표 정렬하기2
- 공공데이터 retrofit
- 백준 균형잡힌 세상
- 백준 4949
- ViewBinding Fragment
- 안드로이드 공공데이터
- 공공데이터 kotlin
- 모각코
- 안드로이드 인트로 코틀린
- 안드로이드 인트로 화면
- 백준 11866
- 백준 1920
- 좌표 정렬하기
- 백준 11651
- 백준 1837
- 백준 요세푸스 문제0
- 백준 통계
Archives
- Today
- Total
개발 지식 공유, 복습
백준 - 11651(좌표 정렬하기 2) C++ 본문
https://www.acmicpc.net/problem/11651
11651번: 좌표 정렬하기 2
첫째 줄에 점의 개수 N (1 ≤ N ≤ 100,000)이 주어진다. 둘째 줄부터 N개의 줄에는 i번점의 위치 xi와 yi가 주어진다. (-100,000 ≤ xi, yi ≤ 100,000) 좌표는 항상 정수이고, 위치가 같은 두 점은 없다.
www.acmicpc.net
이번엔 다른 좌표 정렬 하기이다. 이전에는 x 기준이 우선시 됐었으나, 이번에는 y기준이 우선시 되고, y가 같을 시, x를 오름차순으로 나열해야 한다.
자료들을 담을 구조는 이전처럼 pair와 vector를 사용했다.
이번에는 정렬 기준을 정하는 함수를 따로 만들어 정렬하였다.
정렬 기준을 정하는 함수는 이전에 학습해서 쉽게 해결할 수 있었다.
아! 혹시 정렬 기준을 정하는 함수를 구현할 때 if 조건을 넣어주는 것이 매우 중요하다!
필자는 단순히 a.second < b.second만 return으로 설정한 결과 오답이 됐었다...
#include <stdio.h>
#include <vector>
#include <algorithm>
using namespace std;
// y좌표가 증가하는 순으로, y좌표가 같으면 x좌표가 증가하는 순서로 정렬
bool compare(pair<int, int> a, pair<int, int> b)
{
if (a.second == b.second)
// y가 같을 때 x로 오름차순
return a.first < b.first;
// y로 오름차순
return a.second < b.second;
}
int main()
{
freopen("input.txt", "rt", stdin);
int n;
scanf("%d", &n);
vector<pair<int, int>> vec(n);
for (int i = 0; i < n; i++)
{
scanf("%d %d", &vec[i].first, &vec[i].second);
}
sort(vec.begin(), vec.end(), compare);
for (int i = 0; i < n; i++)
{
printf("%d %d\n", vec[i].first, vec[i].second);
}
return 0;
}
'알고리즘(백준)' 카테고리의 다른 글
백준 - 2108(통계학) C++ (0) | 2021.12.21 |
---|---|
백준- 1920(수 찾기) C++ (0) | 2021.09.01 |
백준- 11650(좌표 정렬하기) C++ (0) | 2021.08.31 |
백준-10814(나이순 정렬) C++ (0) | 2021.08.28 |
백준-10989(수 정렬하기 3) C++ (0) | 2021.08.28 |