카드 정렬하기 1715

PublicMinsu·2023년 1월 26일
0

문제

접근 방법

작은 것부터 합해가면 되는 것 같다.

코드

#include <iostream>
#include <vector>
#include <queue>
using namespace std;
int main()
{
    priority_queue<int, vector<int>, greater<int>> lq;
    int N, ret = 0;
    cin >> N;
    while (N--)
    {
        int n;
        cin >> n;
        lq.push(n);
    }
    while (lq.size() != 1)
    {
        int first = lq.top();
        lq.pop();
        int second = lq.top();
        lq.pop();
        ret += first + second;
        lq.push(first + second);
    }
    cout << ret;
    return 0;
}

풀이

혹시나 했는데 맞았다. 작은 값부터 합해가며 1개의 카드 묶음이 되면 되는 것이다. 그 과정에서 합친 값을 누적해가면 된다.

profile
연락 : publicminsu@naver.com

0개의 댓글