developerU
[프로그래머스] 명예의 전당 (java) 본문
문제링크
https://school.programmers.co.kr/learn/courses/30/lessons/138477
풀이 방법
1. PriorityQueue를 이용해 숫자가 작은 순서대로 정렬
2. pq의 사이즈가 k보다 작다면 pq에 값을 추가하고
3. pq의 사이즈가 k보다 크거나 같다면 score[i]의 값과 pq의 첫번째 값 비교
4. score[i]의 값이 pq의 첫번째 값보다 크다면 pq에서 첫번째 값을 빼고 socre[i]를 넣음
5. answer[i] 는 pq의 첫번째 값(다음에도 사용해야하기 때문에 빼는 것이 아니라 peek()!!)
코드
import java.util.*;
class Solution {
public int[] solution(int k, int[] score) {
int[] answer = new int[score.length];
PriorityQueue<Integer> pq = new PriorityQueue<Integer>();
for(int i=0; i<score.length; i++){
if(pq.size() < k){
pq.offer(score[i]);
} else{
if(score[i] > pq.peek()){
pq.poll();
pq.offer(score[i]);
}
}
answer[i] = pq.peek();
}
return answer;
}
}
'Algorithm > Programmers' 카테고리의 다른 글
[프로그래머스] level2 두 큐 합 같게 만들기 (java) 시간초과 해결 (1) | 2022.09.03 |
---|---|
[프로그래머스] level2 단체사진 찍기 (java) (0) | 2022.06.30 |
[프로그래머스] level2 오픈채팅방 (java) (0) | 2022.05.04 |
[프로그래머스] level1 숫자 문자열과 영단어 (0) | 2022.03.24 |
[프로그래머스 Java] level2 짝지어 제거하기 (0) | 2021.04.22 |
Comments