백준
백준 1715번 (Gold 4)
이야기prog
2025. 3. 11. 16:28
https://www.acmicpc.net/problem/1715
#include <iostream>
#include <queue>
using namespace std;
int main() {
priority_queue<int, vector<int>, greater<int>> pq;
int N;
cin >> N;
for (int i = 0; i < N; ++i) {
int tmp;
cin >> tmp;
pq.push(tmp);
}
int sumOfFirstTwoVal = 0;
while (pq.size() > 1) {
int tmp = pq.top();
pq.pop();
tmp += pq.top();
pq.pop();
pq.push(tmp);
sumOfFirstTwoVal += tmp;
}
std::cout << sumOfFirstTwoVal;
return 0;
}
데이터의 범위를 보니 정렬을 해도 될 것 같은데, 굳이 정렬할 필요 없이 제일 작은 두값을 받아서 합해야 하는 문제다보니 우선순위 큐를 사용하였다.