카드를 PriorityQueue를 이용해서 (자동으로) 오름차순 정렬을 합니다.
카드 묶음을 합치고 다시 누적하기 위해서 poll(), add() 합니다.
정렬은 Arrays.sort를 이용할 수도 있지만, 지속적으로 값을 꺼내고 저장하기 위해서는 PriorityQueue가 더 효율적입니다.
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 bufferedReader = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer stringTokenizer = new StringTokenizer(bufferedReader.readLine());
int N = Integer.parseInt(stringTokenizer.nextToken());
PriorityQueue<Integer> priorityQueue = new PriorityQueue<>();
int answer = 0;
for(int i = 0; i < N; i++){
stringTokenizer = new StringTokenizer(bufferedReader.readLine());
priorityQueue.add(Integer.parseInt(stringTokenizer.nextToken()));
}
while(priorityQueue.size() > 1){
int a = priorityQueue.poll();
int b = priorityQueue.poll();
answer += a + b;
priorityQueue.add(a+b);
}
System.out.println(answer);
}
}
.
.
.
문제는 아래에서 확인할 수 있습니다.
https://www.acmicpc.net/problem/1715
'Algorithm > Baekjoon' 카테고리의 다른 글
[백준_JAVA_알고리즘] 1302 베스트셀러 #해시 (2) | 2024.12.27 |
---|---|
[백준_JAVA_알고리즘] 11000 강의실 배정 #힙 #우선순위 큐 (0) | 2024.12.23 |
[백준_JAVA_알고리즘] 11279 최대 힙 #힙 #우선순위 큐 (0) | 2024.12.19 |
[백준_JAVA_알고리즘] 11286 절댓값 힙 #힙 #우선순위 큐 (1) | 2024.12.15 |
[백준_JAVA_알고리즘] 24511 queuestack (4) | 2024.07.20 |