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> 를 써주면되고 괄호는 빼준다.

 

참고 블로그 : coding-insider.tistory.com/entry/sort-%EC%82%AC%EC%9A%A9%EB%B2%95-priorityqueue%EC%97%90%EC%84%9C%EC%9D%98-sort-%EC%B0%A8%EC%9D%B4

 

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

 

+ Recent posts