336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.
문제 : https://www.acmicpc.net/problem/1715
가장 작은 수가 queue의 top으로 오게하는 priority queue를 이용하면 된다.
99프로에서 계속해서 틀려서 찾아보니 n==1 인 경우는 답이 0이란다...ㅜㅜ
바보같이 들어오는 수라고 생각했다 ㅎ
#include <iostream>
#include <vector>
#include <queue>
#include <algorithm>
using namespace std;
int main(){
ios_base::sync_with_stdio(false);
cin.tie(NULL);
int n;
cin >> n;
priority_queue<int, vector<int>, greater<int>> pq;
for(int i = 0; i < n; i++){
int temp;
cin >> temp;
pq.push(temp);
}
int sum = 0;
if(pq.size() == 1){
cout << 0 << '\n';
return 0;
}
while(!pq.empty()){
int a = pq.top(); pq.pop();
int b = pq.top(); pq.pop();
sum += (a+b);
if(pq.empty()){
break;
}
pq.push(a+b);
}
cout << sum << '\n';
return 0;
}
'PS > 백준 문제풀이' 카테고리의 다른 글
[백준 11721] 열 개씩 끊어 출력하기 (0) | 2020.01.04 |
---|---|
[백준 2075] N번째 큰 수 (0) | 2019.08.29 |
[백준 2503] 숫자 야구 (0) | 2019.08.25 |
[백준 1620] 나는야 포켓몬 마스터 이다솜 (0) | 2019.08.21 |
[백준 1269] 대칭 차집합 (0) | 2019.08.21 |