작성
·
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를 이용하여 객체 비교하는거 자주나오죠
자유자재로 다루셔야 시험볼때 시간 안빼기겠죠~~~
즐코딩하시고~ 화이팅~~^^;