인프런 커뮤니티 질문&답변

나윤지님의 프로필 이미지
나윤지

작성한 질문수

정말 쉽게 풀어보는 코딩 테스트 top 기본 문제 (with 자바)

k번째 제일큰 원소 (Kth Largest Element In An Array)

PriorityQueue 내림차순 정렬로 풀 경우

작성

·

287

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를 이용하여 객체 비교하는거 자주나오죠

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

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

나윤지님의 프로필 이미지
나윤지

작성한 질문수

질문하기