C++ STL들 중 코딩테스트에서 자주 쓰이는 정렬 방식에 대해 복습 겸 정리
1) #include <algorithm> 에서 sort 사용
2) #include <queue> 헤더에서 priority_queue 사용시 우선순위 배정
결말부터 이야기하면, 1번 케이스(sort)는 첫번째 인자가 기준
2번 케이스(queue)에서는 두번째 인자가 기준이다.(따로 cmp 함수 생성 시)
pair에서 sort시 기본적으로 첫 번째 인자를 기준으로 정렬된다. 즉 두 번째 인자를 기준으로 정렬하고싶으면 비교 함수 cmp를 작성한다.
🤦♂️🤦♂️헷갈리지 말자!!
★greater <int>()는 sort() 시 내림차순
★greater <int>는 priority_queue에서 오름차순(즉, Min Heap)
1번 작성 예시
2번 작성 예시 (pair second 기준 내림차순 정렬)
struct cmp {
bool operator()(pair<int, int> a, pair<int, int> b) {
return b.second > a.second; //b가기준이므로 내림차순 정렬(두번째 pair인자기준)
}
};
//main문
priority_queue<pair<int, int>,vector<pair<int,int>>, cmp >abc;
서
sort 같은 경우
sort(a.begin(), a.end()); -> 오름차순
sort(a.begin(), a.end(), greater<int>()); -> 내림차순 두가지 경우를 자주 쓰는것 같고,
우선순위 큐에서는 반대로 오름차순시 greater<int> 를 써주면되고 괄호는 빼준다.
sort 사용법 + priority_queue에서의 sort 방식 차이
#include sort https://blockdmask.tistory.com/178 헤더파일에 속해있습니다. sort(start, end).." data-og-host="blockdmask.tistory.com" data-og-source-url="https://blockdmask.tistory.com/178" data-og-ur..
coding-insider.tistory.com