-
13975 백준 - 파일 합치기 3, C++, 우선순위 큐쾌락없는 책임 (공부)/알고리즘 문제풀이 2021. 9. 18. 14:43반응형
#include <iostream> #include <queue> using namespace std; int t; int main(){ scanf("%d", &t); while (t--){ long long ans = 0, input; int k; priority_queue<long long> pq; scanf("%d", &k); for(int i = 0; i < k; i++){ scanf("%lld", &input); pq.push(-input); } int count = 0; while(!pq.empty()){ if(count == k - 1) break; long long cardA = -pq.top(); pq.pop(); long long cardB = -pq.top(); pq.pop(); long long newCard = cardA + cardB; pq.push(-newCard); ans += newCard; count++; } printf("%lld\n", ans); } }
첫 줄에서 테스트케이스 수를 입력받은 뒤 테스트 케이스별로 풀이를 하면 되는 문제였습니다. 우선순위 큐를 작은 수가 먼저 나오게 설정한 다음
1. 우선순위 큐에서 나온거 2개 합치기
2. 비용은 따로 변수에 저장
3. 이후 결과물은 다시 큐에 삽입
하면 풀 수 있는 문제였습니다. 코드가 어려운건 아니지만 우선순위 큐에 대한 이해가 필요한 문제였습니다.
반응형'쾌락없는 책임 (공부) > 알고리즘 문제풀이' 카테고리의 다른 글
백준 1644 - 소수의 연속합, C++, 에라토스테네스의 채, 두 포인터 (0) 2021.09.20 백준 14921 - 용액 합성하기 ,C++ (0) 2021.09.19 1647 백준 - 도시 분할 계획, C++, 크루스칼 알고리즘 (0) 2021.09.17 11003 백준 최솟값 찾기 - C++, 덱 (0) 2021.09.16 1823 백준 수확 - C++, DP (0) 2021.09.16