반응형
이 문제는 허프만 알고리즘을 이용하는 간단한 문제입니다.
허프만 알고리즘에 대한 설명은 아래의 글에 있습니다.
import java.io.*;
import java.util.*;
public class Main {
public static void main(String[] args) throws IOException{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int N = Integer.parseInt(br.readLine());
Queue<Integer> q = new PriorityQueue<>();
for(int i = 0; i<N; i++)
q.offer(Integer.parseInt(br.readLine()));
int sum = 0;
if(N == 1){
System.out.println(0);
return;
}
while(true){
int a = q.poll();
int b = q.poll();
sum += a+b;
if(q.isEmpty())
break;
q.offer(a+b);
}
System.out.println(sum);
}
}
허프만 알고리즘에 대해 알고 있다면 쉽게 풀 수 있는 문제였습니다.
반응형
'알고리즘 > 그리디 알고리즘' 카테고리의 다른 글
백준 2212번 : 센서 java (0) | 2022.08.09 |
---|---|
백준 2437번 : 저울 java (0) | 2022.08.08 |
백준 1744번 : 수 묶기 java (0) | 2022.08.05 |
백준 11000번 : 강의실 배정 java (0) | 2022.08.03 |
백준 1946번 : 신입 사원 java (0) | 2022.08.01 |
댓글