본문 바로가기
백준

백준 1715 카드 정렬하기

by 콩순이냉장고 2021. 10. 30.

문제 URL : https://www.acmicpc.net/problem/1715

 

1715번: 카드 정렬하기

정렬된 두 묶음의 숫자 카드가 있다고 하자. 각 묶음의 카드의 수를 A, B라 하면 보통 두 묶음을 합쳐서 하나로 만드는 데에는 A+B 번의 비교를 해야 한다. 이를테면, 20장의 숫자 카드 묶음과 30장

www.acmicpc.net

문제 접근법 : 어렵지 않은문제다 모든 입력값을 pq넣어 작은값을 2개씩 빼줘 그2개를 더한값을 pq에 다시집어넣으면된다 이렇게될겨우 결국 pq안에는 사이즈가 반드시 1이 될텐데 사이즈가 1보다 큰경우만 연산을 진행하면되므로

그 합산한 결과만 출력해주면 되는문제입니다.

 

소스코드 : 

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
//By 
#include <bits/stdc++.h>
using namespace std;
vector<int> v;
int n;
void input() {
    cin >> n;
    v.resize(n);
    for (int i = 0; i < n; i++)
        cin >> v[i];
}
void solve() {
    priority_queue<intvector<int>, greater<int>> pq(v.begin(), v.end());
    int sum = 0;
    while (pq.size() > 1) {
        int a = pq.top();
        pq.pop();
        int b = pq.top();
        pq.pop();
        pq.push(a + b);
        sum += a + b;
    }
    cout <<sum<< "\n";
}
int main() {
    ios_base::sync_with_stdio(false);
    cin.tie(0);
    cout.tie(0);
    input();
    solve();
}
cs

 

 

궁금한점 혹은 모르는점 어떤 질문이든 댓글은 언제나 환영입니다.

'백준' 카테고리의 다른 글

백준 2696 중앙값 구하기  (0) 2021.10.30
백준 11000 강의실 배정  (0) 2021.10.30
백준 8972 미친 아두이노  (0) 2021.10.24
백준 1113 수영장 만들기  (0) 2021.10.17
백준 2666 벽장문의 이동  (0) 2021.10.05