
문제 링크 : 2558 - Take Gifts From the Richest Pile
- PriorityQueue(Collections.reverseOrders()); 사용해서 문제를 풀면 됨. 난이도는 쉬운 편.
- 제곱근에 대한 값을 꺼내기 위해서는 Math.sqrt 를 사용해서 풀어야함. (int)로 바꾼 이유는 더블로 값이 나오기에 형변환이 필요함.
- k 값만큼 반복하면서 값을 구하고
- 마지막에 그 값을 더하면 끝. -> long sum으로 해야 정답임. 값의 범위를 정확하게 위해서는 long이 필수.
문제가 영어라서 당황한 거 빼고는 괜찮았음.
class Solution {
public long pickGifts(int[] gifts, int k) {
PriorityQueue queue = new PriorityQueue(Collections.reverseOrder());
long sum = 0;
for(int i =0; i<gifts.length; i++){
queue.add(gifts[i]);
}
for(int i =0; i<k; i++){
queue.add((int)(Math.sqrt((int)queue.poll())));
}
for(int i =0; i<gifts.length; i++){
sum += (int)queue.poll();
}
return sum;
}
}