일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- p-value
- BFS
- 스택
- classification
- datascience
- 그리디
- 정렬
- AA test
- Game Data Analysis
- Deeplearning
- 7569번
- 자료구조
- Queue
- 구현
- cs231n
- Machine learning
- 통계
- 딥러닝
- Anti Cheat
- Python
- 중앙갑
- 백준
- anomaly detection
- DP
- 알고리즘
- c++
- Stack
- 큐
- ML
- Journal Review
Archives
- Today
- Total
Software Hyena::
[백준 11651번] - 좌표 정렬하기 2 / C++ 본문
반응형
11651번: 좌표 정렬하기 2
첫째 줄에 점의 개수 N (1 ≤ N ≤ 100,000)이 주어진다. 둘째 줄부터 N개의 줄에는 i번점의 위치 xi와 yi가 주어진다. (-100,000 ≤ xi, yi ≤ 100,000) 좌표는 항상 정수이고, 위치가 같은 두 점은 없다.
www.acmicpc.net
문제
2차원 평면 위의 점 N개가 주어진다. 좌표를 y좌표가 증가하는 순으로, y좌표가 같으면 x좌표가 증가하는 순서로 정렬한 다음 출력하는 프로그램을 작성하시오.
입력
첫째 줄에 점의 개수 N (1 ≤ N ≤ 100,000)이 주어진다. 둘째 줄부터 N개의 줄에는 i번점의 위치 xi와 yi가 주어진다. (-100,000 ≤ xi, yi ≤ 100,000) 좌표는 항상 정수이고, 위치가 같은 두 점은 없다.
출력
첫째 줄부터 N개의 줄에 점을 정렬한 결과를 출력한다.
-------------------------------------------------------------------------------------------------------
풀이
<C++>
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
bool Ascending(pair<int, int> a, pair<int, int> b) {
if (a.second == b.second) {
return a.first < b.first;
}
return a.second < b.second;
}
int main() {
int N;
cin >> N;
vector<pair<int, int>> v;
int x, y;
for (int i = 0; i < N; ++i) {
cin >> x >> y;
v.push_back({ x, y });
}
sort(v.begin(), v.end(), Ascending);
for (int i = 0; i < N; ++i) {
cout << v[i].first << ' ' << v[i].second << '\n';
}
return 0;
}
자주 보이는 유형의 정렬 문제이다. Ascending만 잘 구현하면 쉽게 풀 수 있는 문제.
1. N을 입력받는다.
2. x, y를 입력받고 pair로 벡터에 넣는다.
3. Ascending으로 정렬한다.
4. 순서대로 출력한다.
반응형
'알고리즘 > 백준' 카테고리의 다른 글
[백준 11292번] - 키 큰 사람 / C++ (0) | 2021.02.25 |
---|---|
[백준 1422번] - 숫자의 신 / C++ (0) | 2021.02.24 |
[백준 3060번] - 욕심쟁이 돼지 / C++ (0) | 2021.02.23 |
[백준 2941번] - 크로아티아 알파벳 / C++ (예외 발견) (0) | 2021.02.23 |
[백준 2435번] - 기상청 인턴 신현수 / C++ (0) | 2021.02.23 |
Comments