[프로그래머스] 명예의 전당(1)

AI·2025년 1월 1일
import java.util.Arrays;

class Solution {
    public int[] solution(int k, int[] score) {
        int[] answer = new int[score.length];
        int[] winner = new int[k]; //arraylist 사용
        //answer에 있는 제일 작은 값과 새로운 값 비교 => 그것보다 크면 바꾸고 오름차순 정렬 
        for(int i=0;i<score.length;i++){
            //k값 보다 적게 들어 있으면 그냥 넣기
            if(i<k) winner[i]=score[i];
            else if(winner[0]<score[i]) winner[0]=score[i];
            
            //삽입 정렬 or Arrays.sort(winner);
            for(int j=1;j<Math.min(winner.length,i+1);j++){
                for(int s=j;s>0 && winner[s]<winner[s-1];s--){
                    int temp = winner[s-1];
                    winner[s-1] = winner[s];
                    winner[s] = temp;
                }
            }
            
            answer[i] = winner[0]; 
        }
        
        return answer;
    }
}

그냥 우선순위 큐를 활용해서도 가능

        PriorityQueue<Integer> priorityQueue = new PriorityQueue<>();

        int temp = 0;

        for(int i = 0; i < score.length; i++) {

            priorityQueue.add(score[i]);
            if (priorityQueue.size() > k) {
                priorityQueue.poll();
            }

            answer[i] = priorityQueue.peek();
        }

0개의 댓글