이우의 개발일지
[C/C++] 백준 11651번 좌표 정렬하기2 -(1) 본문
백준 11651번 좌표 정렬하기 문제
이 문제는 간단하게 y좌표를 오림차순으로 정렬하고, 만약 y좌표가 같다면 x좌표의 오름차순으로 정렬하는 문제이다.
간단하게 x,y 를 동시에 받을려면 pair 를 써서 x,y를 한 묶음으로 저장해놓는다.
또한, sort 함수를 쓰는데 이때 x를 따지는 것이 아닌 y를 따지고, y가 같다면 x를 따져야하기 때문에 sort함수에 넣을 조건문을 따로 써준다.
bool comp(pair<int, int>& a, pair<int, int>& b) {
if (a.second == b.second) {
return a.first < b.first;
}
return a.second < b.second;
}
이런식으로 따로 쓰면 되는데, 자주 나오는 개념이니 까먹지 않는 것이 좋다.
11651번 좌표 정렬하기 C++ 전체 코드
#include <iostream>
#include <cstdlib> // system() 함수가 선언된 헤더
#include <algorithm>
#include <vector>
using namespace std;
bool comp(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>> vec;
for (int i = 0; i < n; i++) {
int num1, num2;
cin >> num1 >> num2;
vec.push_back({num1, num2});
}
sort(vec.begin(), vec.end(), comp);
for (int i = 0; i < vec.size(); i++) {
cout << vec[i].first << " " << vec[i].second << '\n';
}
return 0;
}
반응형
'Coding' 카테고리의 다른 글
[C/C++] 화면에 출력 / BFS / 코드트리 / 실버1 (0) | 2024.10.29 |
---|---|
[C/C++] 백준 1654번 랜선 자르기 / 이분 탐색 알고리즘 - (1) (0) | 2024.10.20 |
[C/C++] 백준 1018번 체스판 다시 칠하기 - (1) (0) | 2024.10.07 |
[C/C++] 백준 줄 세우기 2252번 / 위상 정렬 알고리즘 (0) | 2024.09.30 |
[백준/C++] 잃어버린 괄호 풀이 1541번 /그리디/알고리즘/코딩테스트 - (1) (0) | 2024.08.05 |