#include <iostream>
#include <queue>
using namespace std;
struct cmp {
bool is_int(char a) {
int code = (int)a;
return a >= 48 && a <= 57; // 아스키코드
}
// true면 a와b가 위치를 swap
bool operator()(string a, string b) {
if (a.length() != b.length()) // 길이가 다르면 짧은 것이 먼저온다.
return a.length() > b.length();
// 길이가 같다면
int sumA = 0, sumB = 0;
for (int i = 0; i < a.length(); i++){
if (is_int(a[i])) sumA += (a[i] - '0');
if (is_int(b[i])) sumB += (b[i] - '0');
}
if (sumA != sumB)
return sumA > sumB; // 각 자리수의 숫자의 합이 작은 것이 먼저온다
// 숫자의 합이 같다면 사전순
for (int i = 0; i < a.length(); i++) {
return (int)a[i] > (int)b[i];
}
return true;
}
};
int main()
{
priority_queue<int, vector<int>, greater<int>> minHeap; // 최소힙
priority_queue<int, vector<int>, less<int>> minHeap; // 최대힙
priority_queue<string, vector<string>, cmp> myQ; // 커스텀
}
twpower.github.io/93-how-to-use-priority_queue-in-cpp
'C | C++' 카테고리의 다른 글
[C++] string to int, char to int, int to string, int to char (0) | 2022.05.11 |
---|---|
[C++] unordered_map을 value를 기준으로 정렬 (0) | 2022.05.09 |
[Effetive C++] Chapter 1 정리 (0) | 2022.04.27 |
[Effective C++] 기초 정리 (0) | 2022.04.26 |
C++ STL Set(집합) (0) | 2020.12.31 |