0. x와 y 슬라임으로, x+y 슬라임을 만들며, x*y 점수를 획득한다
1. N번째 합칠 슬라임의 무게가 y였다면, N+1, N+2...번째 연산에도 y가 포함되게 된다
2. 크기가 큰 슬라임을 빠르게 합쳐, 이후 연산들에 최대한 많이 포함되도록 해야 한다 (그리디)
3. 슬라임을 크기순으로 2개씩 꺼내며 합쳐나간다.
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.PriorityQueue;
import java.util.StringTokenizer;
public class Main{
public static void main(String[] args)throws Exception {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
PriorityQueue<Integer>pq = new PriorityQueue<>();
int N = pint(br.readLine());
StringTokenizer st = new StringTokenizer(br.readLine(), " ");
for (int i = 0; i < N; i++) {
pq.offer(pint(st.nextToken()));
}
int score = 0;
while(pq.size()!=1) {
int fst = pq.poll();
int snd = pq.poll();
score+=fst*snd;
pq.offer(fst+snd);
}
System.out.println(score);
}
static int pint(String s) {
return Integer.parseInt(s);
}
}
'알고리즘 문제 풀이 > BOJ 실버' 카테고리의 다른 글
[백준] 17276 - 배열 돌리기 (0) | 2021.10.10 |
---|---|
[백준] 1325 - 효율적인 해킹 (0) | 2021.09.25 |
[백준] 5567 - 결혼식 (0) | 2021.08.08 |
[백준] 1697 - 숨바꼭질 (0) | 2021.05.29 |
[백준] 5639 - 이진 검색 트리 (0) | 2021.04.14 |
[백준] 2564 - 경비원 (0) | 2021.04.13 |
[백준] 2110 - 공유기 설치 (0) | 2021.04.13 |