https://www.acmicpc.net/problem/1715
1715번: 카드 정렬하기
정렬된 두 묶음의 숫자 카드가 있다고 하자. 각 묶음의 카드의 수를 A, B라 하면 보통 두 묶음을 합쳐서 하나로 만드는 데에는 A+B 번의 비교를 해야 한다. 이를테면, 20장의 숫자 카드 묶음과 30장
www.acmicpc.net
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 43 44 | #include <iostream> #include <algorithm> #include <cstring> #include <vector> #include <utility> #include <unordered_map> #include <map> #include <queue> #include <stack> using namespace std; // 백준 1715 카드 정렬하기 int main() { ios::sync_with_stdio(false); cin.tie(0); int N; cin >> N; priority_queue<int, vector<int>, greater<int>> pq; for (int i = 0; i < N; i++) { int num; cin >> num; pq.push(num); } /* while (!pq.empty()) { cout << pq.top() << endl; pq.pop(); } */ if (N == 1) { cout << 0; return 0; } int num1 = 0; int num2 = 0; int result = 0; while (1) { num1 = pq.top(); pq.pop(); num2 = pq.top(); pq.pop(); result += num1 + num2; if (pq.empty()) break; pq.push(num1 + num2); } cout << result; } | cs |
'BAEKJOON ONLINE JUDGE' 카테고리의 다른 글
[백준 17779] 게리맨더링 2 (C++) (0) | 2021.08.29 |
---|---|
[백준 1946] 신입 사원 (C++) (0) | 2021.08.28 |
[백준 1781] 컵라면 (C++) (0) | 2021.08.27 |
[백준 13904] 과제 (C++) (0) | 2021.08.27 |
[백준 1374] 강의실 (C++) (0) | 2021.08.27 |