728x90
반응형
https://www.acmicpc.net/problem/15903
1. Logic
- 카드를 최소한의 점수로 합체하기 위해서는 가장 작은 값끼리 묶어서 합쳐야 하기 때문에 우선순위 큐를 사용해서 가장 앞에 오는 두개의 수를 가지고 계산을 돌려준다!
2. Code
#include<bits/stdc++.h>
using namespace std;
priority_queue<long long, vector<long long>, greater<>> pq;
int main() {
long long n, cnt;
cin >> n >> cnt;
for(int i = 0; i < n; i++) {
int a;
cin >> a;
pq.push(a);
}
for(int i = 0; i < cnt; i++) {
long long fir = pq.top();
pq.pop();
long long sec = pq.top();
pq.pop();
long long sum = fir + sec;
pq.push(sum);
pq.push(sum);
}
long long ans = 0;
while(!pq.empty()) {
ans += pq.top();
pq.pop();
}
cout << ans;
}
3. Feedback
- 정답의 범위를 잘 체크해서 answer 변수 타입을 잘 맞춰주자
728x90
반응형
'Algorithm > Beakjoon' 카테고리의 다른 글
[백준/Baekjoon] 14501 퇴사 C++ :: Dynamic Programming (0) | 2023.08.12 |
---|---|
[백준/Baekjoon] 1932 정수 삼각형 C++ :: Dynamic Programming (0) | 2023.08.12 |
[백준/Baekjoon] 11501 주식 C++ :: Greedy (0) | 2023.08.11 |
[백준/Baekjoon] 12852 1로 만들기 2 C++ :: Dynamic Programming (0) | 2023.08.10 |
[백준/Baekjoon] 2293 동전 1 C++ :: Dynamic Programming (2) | 2023.08.09 |