728x90
https://www.acmicpc.net/problem/13975
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.PriorityQueue;
import java.util.StringTokenizer;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int testCnt = Integer.parseInt(br.readLine());
for (int tc =0; tc<testCnt; tc++) {
int chapterCnt = Integer.parseInt(br.readLine().strip());
StringTokenizer st = new StringTokenizer(br.readLine());
PriorityQueue<Long> chapter = new PriorityQueue<>();
for (int i=0; i<chapterCnt; i++)
chapter.add(Long.parseLong(st.nextToken()));
long result = 0;
while(chapter.size() != 1) {
long a = chapter.poll();
long b = chapter.poll();
result += a+b;
chapter.add(a+b);
}
System.out.println(result);
}
}
}
- minHeap에 입력값을 모두 답는다
- heap의 size가 1이 될 때까지 반복한다
- heap에서 최솟값 2개를 빼서 result에 더해주고
- 최솟값 2개를 더해 다시 heap에 넣어준
728x90
'알고리즘 > 백준' 카테고리의 다른 글
[Java] 백준 2812 크게 만들기 - 골드3 (0) | 2023.07.14 |
---|---|
[Java] 백준 2109 순회강연 - 골드3 (0) | 2023.07.14 |
[Java] 백준 1744 수 묶기 - 골드4 (0) | 2023.07.14 |
[Java] 백준 1715 카드 정렬하기 - 골드4 (0) | 2023.07.14 |
[Java] 백준 1339 단어 수학 - 골드4 (0) | 2023.07.14 |