본문 바로가기
코딩/문제풀이-백준

백준 1715번 - 카드 정렬하기 (C++)

by 남대현 2021. 4. 27.
반응형

문제

해결 방법 

우선순위 큐(priority_queue)를 활용해서 문제 그대로 구현했음.

코드

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
#include <iostream>
#include <queue>
#include <vector>
using namespace std;
 
int main()
{
    ios_base::sync_with_stdio(false);
    cin.tie(NULL);
    cout.tie(NULL);
 
    int n, size, a[2= {}, ans = 0;
    priority_queue<intvector<int>, greater<int>> Que;
    cin >> n;
 
    if (n == 1)
    {
        cout << "0";
        return 0;
    }
 
    for (int i = 0; i < n; ++i)
    {
        int b;
        cin >> b;
        Que.push(b);
    }
 
    while (Que.size() != 1)
    {
        ans += a[0+ a[1];
        for (int i = 0; i < 2++i)
        {
            a[i] = Que.top();
            Que.pop();
        }
        Que.push(a[0+ a[1]);
    }
 
    cout << ans + Que.top();
}
cs

입력 -> 맨 앞 저장 후 삭제 x2 -> 저장한 숫자 두개 합쳐서 큐에 넣음 + 합 저장 -> 큐에 하나 남을때 까지 반복 -> 저장된 합 + 마지막에 큐에 남은 값 출력

 

잡설 : 비교가 아니라 합으로 이해하고 있었어서 입력이 하나면 비교 불가라 0인걸 몰라서 왜 틀렸지 한참 해맸다....

반응형

댓글