99클럽 코테 스터디 22일차 TIL
💙 JAVA 비기너
import java.util.Collections;
import java.util.PriorityQueue;
class Solution {
public long pickGifts(int[] gifts, int k) {
long answer = 0;
PriorityQueue<Integer> heap = new PriorityQueue<>(Collections.reverseOrder());
for (int gift : gifts) {
heap.add(gift);
}
for(int i=0; i<k; i++) {
heap.add((int) Math.sqrt(heap.poll()));
}
for(int a : heap) {
answer += a;
}
return answer;
}
}
감자는 리트코드 처음 풀어봤다.
모든 게 영어였다.
엄청 무서웠다.🥲
근데 겁먹은 거에 비해 문제가 쉬워서인지 금방 이해하고 문제를 풀 수 있었다.
그냥 k
번만큼 gifts
의 가장 큰 수를 제곱근으로 바꿔치리 해라~ 그리고 최종적으론 gifts
에 있는 모든 요소들 더해서 내놔라!!
오늘의 문제 끄읏~~❗❗
하고 끝내긴 좀 아쉬우니 약간의 설명을 보태자면
저번 문제처럼 숫자를 오름차순으로 저장하는 힙을 선언한다.
PriorityQueue heap = new PriorityQueue<>(Collections.reverseOrder());
이 heap
에 정수 배열 gifts
의 요소들을 다 넣어주고 가장 큰 수를 heap.poll()
해서 반환한 다음 Math.sqrt())
를 통해 제곱근을 구해준다. 그리고 이걸 다시 heap
에 넣어준다. 이 과정을 k
번 동안 반복한다.
모든 작업이 완료되면 heap
에 있는 모든 요소들을 answer
에 더해준후 반환하면 된다.
이제 진짜 끄읏~~❗❗❗❗❗