Leetcode Java Take Gifts From the Richest Pile

업데이트:

문제

Link

코드

class Solution {

  public long pickGifts(int[] gifts, int k) {
    Queue<Integer> queue = new PriorityQueue<>((a, b) -> b - a);
    for (int gift : gifts) {
      queue.add(gift);
    }
    while (k-- > 0) {
      queue.add((int) Math.sqrt(queue.poll()));
    }
    long result = 0;
    while (!queue.isEmpty()) {
      result += queue.poll();
    }
    return result;
  }

}

결과

Link

설명

  1. gifts 내에서 k번 수행마다 가장 큰 값을 제곱근된 값으로 치환 후 남은 선물 갯수의 합을 반환하는 문제이다.

  2. queue는 gifts 내 값을 내림차순으로 저장하기 위한 변수로, PriorityQueue로 초기화하고 gifts의 모든 값을 넣어준다.

  3. k가 0 초과일 때 까지 아래를 반복하며 k를 감소시킨다.
    • queue에 가장 큰 값인 앞의 값을 꺼내 제곱근 계산 후 다시 넣어준다.
  4. result에 queue의 모든 값을 더한 후 주어진 문제의 결과로 반환한다.

소스

Sample Code는 여기에서 확인 가능합니다.

댓글남기기