백준

백준 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;

}

데이터의 범위를 보니 정렬을 해도 될 것 같은데, 굳이 정렬할 필요 없이 제일 작은 두값을 받아서 합해야 하는 문제다보니 우선순위 큐를 사용하였다.