컴공댕이 공부일지
[ C++/cpp ] 백준 (11650 좌표 정렬하기) ⭐정렬, 비교함수 본문
728x90
백준 11650번 좌표 정렬하기
(실버 5)
https://www.acmicpc.net/problem/11650
(정답 코드)
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
typedef pair<int,int> p;
// & : 레퍼런스
// const : 상수
// 비교함수 정의
bool cmp (const p &a, const p &b) {
if(a.first!=b.first) {
return a.first < b.first;
}
return a.second < b.second;
}
void sortXY(vector<p>& xy) { // 참조를 이용한 전달. 벡터 직접 수정 가능
sort(xy.begin(), xy.end(), cmp);
}
int main()
{
ios::sync_with_stdio(false);
cin.tie(NULL); cout.tie(NULL);
// 입력
int n;
cin >> n;
vector <p> xy;
int x;
int y;
while(n--) {
cin >> x >> y;
xy.push_back(make_pair(x,y)); //pair 생성 후 vector에 추가
}
// 연산
sortXY(xy);
// 출력
for (int i=0; i<xy.size(); i++) {
cout << xy[i].first << " " << xy[i].second << '\n';
}
return 0;
}
📖 비교함수
정렬 알고리즘에서 사용되는 함수로, 두 요소를 비교하여 그들의 순서를 결정하는 데 사용
비교 함수의 부등호 방향은 정렬의 방향을 결정합니다.
만약 비교 함수에서 첫 번째 요소가 두 번째 요소보다 작으면 음수를 반환하고, 첫 번째 요소가 두 번째 요소보다 크면 양수를 반환하도록 구현하면, 이는 오름차순 정렬을 의미합니다. 즉, 작은 값이 앞에 오게 됩니다.
그러나 반대로 첫 번째 요소가 두 번째 요소보다 크면 음수를 반환하고, 첫 번째 요소가 두 번째 요소보다 작으면 양수를 반환하도록 구현하면, 이는 내림차순 정렬을 의미합니다. 이 경우에는 큰 값이 앞에 오게 됩니다.
따라서 비교 함수의 부등호 방향을 결정할 때는 원하는 정렬 방식에 따라서 부등호의 방향을 선택해야 합니다. 일반적으로는 오름차순을 사용하므로 작은 값이 앞에 오도록 구현됩니다.
-챗지피티 참고..
📖 매개변수 키워드 . 레퍼런스와 상수
매개변수란 함수에 투입되는 변수
- & (레퍼런스):
- &는 레퍼런스를 나타내며, C++에서 함수에 인자를 전달할 때 사용됩니다.
- 레퍼런스를 사용하면 해당 매개변수가 원본 객체를 가리키는 포인터처럼 동작하며, 함수 내에서 해당 객체를 직접 조작할 수 있습니다. 이는 매개변수를 복사하는 것보다 메모리와 성능 면에서 효율적입니다.
- const:
- const는 상수(constant)를 나타내며, 해당 변수가 변경되지 않음을 나타냅니다.
- 함수 매개변수 앞에 const를 붙이면 해당 매개변수가 함수 내에서 수정되지 않음을 보장합니다. 이는 매개변수가 함수 내에서 읽기 전용으로 사용됨을 의미합니다.
- const를 사용하면 프로그램의 안정성과 가독성을 높일 수 있습니다.
728x90
'문제 풀이 > 코딩 문제 풀이 모음' 카테고리의 다른 글
[ C++/cpp ] 백준 (2840 행운의 바퀴) ⭐구현, 시뮬레이션 💥💦 (4) | 2024.03.05 |
---|---|
[ C++/cpp ] 백준 (10814 나이순 정렬) ⭐sort_stable (0) | 2024.03.02 |
[ C++/cpp ] 백준 (15685 드래곤 커브) ⭐구현, 시뮬레이션 (56) | 2023.11.24 |
[ java ] 코드업 (1476 2차원 배열 빗금 채우기 3-1) (0) | 2023.06.10 |
[ java ] 백준 (2798 블랙잭) (0) | 2023.05.22 |
Comments