※ 글쓴이는 취미로 코딩을 익혀보는 사람이라 정확하지 않은 내용을 담고 있을 수 있다 ※
이번에 볼 문제는 백준 13975번 문제인 파일 합치기 3이다.
문제는 아래 링크를 확인하자.
13975번: 파일 합치기 3
프로그램은 표준 입력에서 입력 데이터를 받는다. 프로그램의 입력은 T개의 테스트 데이터로 이루어져 있는데, T는 입력의 맨 첫 줄에 주어진다.각 테스트 데이터는 두 개의 행으로 주어지는데,
www.acmicpc.net
이전에 쓴 measurezero.tistory.com/66 이 문제에서 greedy 알고리즘을 적용한 논리와 같은 논리를 적용할 수 있는 문제이다. 차이점이 있다면 이 문제는 합의 형태로 나타난 문제이고, 저 문제는 곱의 형태로 나타난 문제라는 것이다.
아래는 제출한 소스코드이다.
#include <iostream>
#include <queue>
using std::cin;
using std::cout;
using std::priority_queue;
int main()
{
std::ios::sync_with_stdio(0);
cin.tie(0);
int T;cin >> T;
for (int t = 0;t < T;t++) {
priority_queue<long long> pq;
int K; cin >> K;
for (int i = 0;i < K;i++) {
int x; cin >> x;
pq.push(-x);
}
long long ans = 0;
while (pq.size() > 1) {
long long temp = 0;
temp -= pq.top(); pq.pop();
temp -= pq.top(); pq.pop();
ans += temp;
pq.push(-temp);
}
cout << ans << '\n';
}
}
728x90
'BOJ' 카테고리의 다른 글
[BOJ 10942 // C++] 팰린드롬? (0) | 2021.03.04 |
---|---|
[BOJ 1655 // C++] 가운데를 말해요 (0) | 2021.03.03 |
[BOJ 14698 // C++] 전생했더니 슬라임 연구자였던 건에 대하여 (Hard) (0) | 2021.03.01 |
[BOJ 2691 // C++] 이항 쇼다운 (0) | 2021.02.28 |
[BOJ 16467 // C++] 병아리의 변신은 무죄 (0) | 2021.02.27 |