반응형
문제
해결 방법
우선순위 큐(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<int, vector<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인걸 몰라서 왜 틀렸지 한참 해맸다....
반응형
'코딩 > 문제풀이-백준' 카테고리의 다른 글
백준 1735번 - 분수 합 (C++) (0) | 2021.05.05 |
---|---|
백준 1584번 - 게임 (C++) (0) | 2021.05.05 |
백준 14503번 - 로봇 청소기 (C++) (0) | 2021.04.09 |
백준 1929번 - 소수 구하기 C++ (0) | 2021.04.08 |
백준 7562번 - 나이트의 이동 (C++) (0) | 2021.04.07 |
댓글