-
Notifications
You must be signed in to change notification settings - Fork 0
Closed
Description
아이디어
- 제일 작은 값을 찾아내야하므로 작은 값이 높은 우선순위를 갖도록 저장할 때 정렬되는
우선순위 큐를 활용하자 - 배열을 매번 정렬하는 불필요한 작업이 필요없다. ⇒ 속도가 두배이상 빠름
어려운점 & 실수
- 자료형 범위 확인!!!!!! 또.....또... int 말고 long을 쓰자..... !!!
- m == 0 일 때, 고려하지 못한 코드 (실수)
// 틀린 코드
while (m-- > 0) { }
// 수정 코드
while (--m >= 0) { }정답
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.PriorityQueue;
import java.util.StringTokenizer;
public class N15903 {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st = new StringTokenizer(br.readLine(), " ");
int n = Integer.parseInt(st.nextToken());
int m = Integer.parseInt(st.nextToken());
PriorityQueue<Long> queue = new PriorityQueue<>();
st = new StringTokenizer(br.readLine());
for (int i = 0; i < n; i++) {
queue.add(Long.parseLong(st.nextToken()));
}
while (--m >= 0) {
// 2 <= n <= 1,000
long x = queue.remove();
long y = queue.remove();
queue.add(x + y);
queue.add(x + y);
}
System.out.println(queue.stream().reduce(0L, (a, b) -> a + b));
}
}Reactions are currently unavailable