반응형
https://www.acmicpc.net/problem/13975
13975번: 파일 합치기 3
프로그램은 표준 입력에서 입력 데이터를 받는다. 프로그램의 입력은 T개의 테스트 데이터로 이루어져 있는데, T는 입력의 맨 첫 줄에 주어진다.각 테스트 데이터는 두 개의 행으로 주어지는데,
www.acmicpc.net
[ 문제풀이 ]
1. 수를 입력받을 때 priority_queue에 오름차순으로 넣습니다.
2. pq에서 맨 앞의 두 수를 뽑아 더한 값을 ans에 더하고, 그 값을 다시 pq에 넣습니다.
3. pq가 빌 때까지 위 과정을 반복합니다.
4. ans를 출력합니다.
[ 소스코드 ]
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 | #include<iostream> #include<queue> #define ll long long using namespace std; int main() { int T; scanf("%d", &T); for (int t = 0; t < T; t++) { int K; scanf("%d", &K); priority_queue<ll, vector<ll>, greater<ll>> pq; ll ans = 0; for (int i = 0; i < K; i++) { ll num; scanf("%lld", &num); pq.push(num); } while (1) { const ll a = pq.top(); pq.pop(); const ll b = pq.top(); pq.pop(); ans += a + b; if (pq.empty()) break; pq.push(a + b); } printf("%lld\n", ans); } } | cs |
반응형
'백준' 카테고리의 다른 글
[ 백준 ] 14427번 - 수열과 쿼리 15 (C++) (0) | 2023.01.13 |
---|---|
[ 백준 ] 2493번 - 탑 (C++) (0) | 2023.01.12 |
[ 백준 ] 16118번 - 달빛 여우 (C++) (0) | 2023.01.10 |
[ 백준 ] 16562번 - 친구비 (C++) (0) | 2023.01.09 |
[ 백준 ] 14226번 - 이모티콘 (C++) (0) | 2023.01.08 |