어흥
[백준 1715] 카드 정렬하기 (C++) 본문
728x90
반응형
문제 링크: https://www.acmicpc.net/problem/1715
1. 주의할 점
- 총 합(Result)이 Int범위를 벗어날 수도 있으므로 Long Long으로 설정한다
2. 구현
- Min Heap의 기능을 가진 우선순위큐를 사용한다
- 우선순위큐에 남은 원소가 1개가 될 때까지 위의 2개를 Pop시킨후 더한값을 Result에 더해주고 다시 우선순위큐에 넣는다
#include <iostream>
#include <queue>
#include <algorithm>
using namespace std;
int main() {
int num, val;
long long result = 0;
cin >> num;
priority_queue<int, vector<int>, greater<int>> pq;
for (int i = 0; i < num; i++) {
cin >> val;
pq.push(val);
}
while (pq.size() > 1) {
int a = pq.top();
pq.pop();
a+= pq.top();
pq.pop();
result += a;
pq.push(a);
}
cout << result;
system("pause");
return 0;
}
728x90
반응형
'알고리즘 > 백준' 카테고리의 다른 글
[백준 14225] 부분수열의 합 (C++) (0) | 2020.04.05 |
---|---|
[백준 1826] 연료 채우기 (C++) (0) | 2020.04.04 |
[백준 2636] 치즈 (C++) (0) | 2020.04.04 |
[백준 8972] 미친 아두이노 (C++) (0) | 2020.04.03 |
[백준 11401] 이항 계수 3 (C++) (0) | 2020.04.02 |
Comments