[99클럽 코테 스터디 22일차 TIL] leetcode 2558. Take Gifts From the Richest Pile

0
post-thumbnail

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에 더해준후 반환하면 된다.

이제 진짜 끄읏~~❗❗❗❗❗

profile
나는 말하는 감자다

0개의 댓글