본문 바로가기
Java

[Leetcode] Take Gifts From the Richest Pile

by 간장공장공차장 2024. 11. 18.
반응형

TIL

  1. 변동이 있는 변수/크기 변동이 있는 오브젝트를 반복문의 조건문으로 사용하지 말기

ex) 아래처럼 poll하면서 size가 계속 작아지는데 이게 반복문 횟수의 기준이다..? -> 안됨

        for( int i = 0; i < giftMax.size() ; i++){

            int pollNum =  giftMax.poll();
            sum += pollNum;

        }
  1. ** Array -> Length, ArrayList, Queue -> size()**

코드

import java.util.*;

class Solution {
    public long pickGifts(int[] gifts, int k) {

        long sum = 0;

        PriorityQueue<Integer> giftMax = new PriorityQueue<>((o1, o2) -> o2 - o1 );

        for( int i = 0; i < gifts.length ; i++){

            giftMax.offer(gifts[i]);

        }

        for( int i = 0; i < k ; i++){

           int maxGift = giftMax.poll();

           if(maxGift > 1){

            int remainGift = (int)Math.sqrt(maxGift);
            giftMax.offer(remainGift);

           }else{

            giftMax.offer(1);
           }

        }

        int giftMaxSize = giftMax.size();

    while (!giftMax.isEmpty()) {
        int pollNum = giftMax.poll(); // 가장 큰 선물 하나씩 꺼냄
        sum += pollNum; // sum에 더함
    }

    return sum;


    }
}
반응형