• 카테고리

    질문 & 답변
  • 세부 분야

    알고리즘 · 자료구조

  • 해결 여부

    미해결

PriorityQueue 내림차순 정렬로 풀 경우

21.01.05 18:01 작성 조회수 204

2

안녕하세요  !

PrioryQueue 오름차순 정렬 하셔서 풀이 하셨는데, 

오름차순이 아닌 내림차순으로 해서 PQ에 넣는 방법에 대해서는 어떻게 생각하시나요?

  public int solve(int[] nums , int k) {
    int answer = 0;
    // priority queue 내림차순 정렬
    PriorityQueue<Integer> pq = new PriorityQueue(Collections.reverseOrder());

    // Priority Queue에 배열 원소들을 모두 넣는다.
    for (int i = 0; i < nums.length; ++i) {
      pq.offer(nums[i]);
    }

    // k개 꺼내서, 마지막으로 꺼낸 원소를 반환한다
    while(k > 0) {
      answer = pq.poll();
      --k;
    }

    return answer;
  }

답변 1

답변을 작성해보세요.

2

네 안녕하세요~~

좋은 아이디어입니다~~

PriorityQueue는 숫자는 디폴트가 오름차순이죠.(minHeap 꼭대기에 제일 작은값)

반대로 내림차순으로 maxHeap을 만드시고, 그걸 빼내고 k번째인거 체크하는 순으로 하셨네요~ 굿입니다.

PriorityQueue 비교하는 문제는 은근히 나오고, Comparator를 이용하여 객체 비교하는거 자주나오죠

자유자재로 다루셔야 시험볼때 시간 안빼기겠죠~~~

즐코딩하시고~ 화이팅~~^^;