- 우선순위 큐 사용자 정의 비교함수 작성
- 우선순위 큐에 넣어서 비교해야할 요소가 3개 이상 있을 경우, 연산자 오버라이딩을 해야 한다.
- 이 때, 중요한 것은 단순히 리턴타입이 단순히 bool 인 함수를 만드는 것이 아닌 연산자 오버라이딩이다.
struct INFO{ int y; int x; int z; }; struct cmp{ bool operator()(INFO a, INFO b){ if(a.y == b.y){ if(a.x == b.x){ return a.z < b.z; // z는 오름차순 } return a.x > b.x; // x는 오름차순 } return a.y < b.y; // y는 내림차순 } }; int main() { priority_queue<INFO, vector<INFO>, cmp>pq; pq.push({1,2,3}); pq.push({3,1,2}); pq.push({4,1,1}); pq.push({2,4,3}); pq.push({2,5,3}); pq.push({2,0,3}); while(!pq.empty()){ cout<<pq.top().y << ' '<<pq.top().x<<' '<<pq.top().z <<endl; pq.pop(); } /* 4 1 1 3 1 2 2 0 3 2 4 3 2 5 3 1 2 3 */ return 0; }
'Problem Solving > 알고리즘' 카테고리의 다른 글
코딩테스트에서 자주 쓰는 C++ STL 라이브러리, 자료구조, 알고리즘 정리(3) - 플로이드 와샬(Floyd-Warshall) (0) | 2021.01.13 |
---|---|
코딩테스트에서 자주 쓰는 C++ STL 라이브러리, 자료구조, 알고리즘 정리(2) - 다익스트라(Dijkstra) (0) | 2021.01.12 |
코딩테스트에서 자주 쓰는 C++ STL 라이브러리, 자료구조, 알고리즘 정리(1) - 유니온 파인드(Union-Find) (0) | 2021.01.05 |
순열, 조합 알고리즘 - DFS로 구하기(백트래킹), C++, Python (1) | 2020.02.25 |
알고리즘 문제풀이(Java) - 달팽이문제(2차원배열) (0) | 2019.01.06 |