Post List

[BOJ] 백준 1715 카드 정렬하기

문제 링크 : https://www.acmicpc.net/problem/1715

최소 우선순위 큐를 사용해서 앞의것 부터 2개씩 뽑아 더하면 되는 문제였습니다.

소스코드 :
#include <iostream>
#include <vector>
#include <list>
#include <string>
#include <queue>
using namespace std;


int main() {

ios_base::sync_with_stdio(false);
cin.tie(0);

//priority_queue<int> maxHeap;
priority_queue<long long, vector<long long>, greater<long long> > minHeap;

int n;
cin >> n;

for (int i = 0; i < n; i++) {
long long num;
cin >> num;
minHeap.push(num);
}

long long sum = 0;
//sum += minHeap.top();
//minHeap.pop();

while (!minHeap.empty()) {
long long tmp = 0;
if (minHeap.size() > 0) {
tmp += minHeap.top();
minHeap.pop();
}
if (minHeap.size() > 0) {
tmp += minHeap.top();
minHeap.pop();
minHeap.push(tmp);

}
sum += tmp;
if (minHeap.size() == 1) {
break;
}
}
if (n == 1) {
std::cout << 0 << endl;
}
else
std::cout << sum << '\n';

}

댓글