반응형
#문제정보
#문제분석
C++ STL 라이브러리의 queue를 이용하면 간단하게 해결 가능한 문제이다.
10장 20장 40장 50장 100장 묶음의 카드뭉치가 주어졌다고 가정할때, 무조건 작은 카드들 부터 묶는게 최적의 선택이다.
따라서 priority_queue 컨테이너 어댑터를 이용해서, 작은 카드 뭉치 두개를 임시변수에 저장해 놓은뒤 , 각각 pop 하고 합쳐서 다시 집어넣는 식으로 풀이하였다.
#소스코드
#include <iostream>
#include <queue>
using namespace std;
int N;
int result;
int a,b;
int main()
{
ios::sync_with_stdio(false); cout.tie(0);
priority_queue<int, vector<int>, greater<int>> q;
cin >> N;
for (int i = 0 ; i < N ; ++i)
{
int temp;
cin >> temp;
q.push(temp);
}
while (q.size() > 1)
{
a = q.top(); q.pop();
b = q.top(); q.pop();
result += (a + b);
q.push(a + b);
}
cout << result << "\n";
return 0;
}
반응형
'Archive2 > ProblemSolving' 카테고리의 다른 글
[C/C++] BOJ(백준) 1439 "뒤집기" 문제 풀이 & 소스 코드 (0) | 2021.05.02 |
---|---|
[C/C++] BOJ(백준) 2437 "저울" 문제 풀이 (0) | 2021.04.28 |
[C/C++] BOJ(백준) 1080 "행렬" 문제 풀이 (0) | 2021.04.27 |
[C/C++] BOJ(백준) 4796 "캠핑" 문제 풀이 (0) | 2021.04.27 |
[C/C++] BOJ(백준) 10162 "전자레인지" 문제 풀이 (0) | 2021.04.25 |