Algorithm/프로그래머스

[Lv. 1] 명예의 전당(1)

녱녱 2023. 9. 7.

두 가지 경우로 나눴다! 명예의 전당에 점수가 꽉 차지 않은 경우와 꽉 차있는 경우!

꽉 차있지 않은 경우는 그냥 선언한 리스트에 들어오는 점수를 추가해주고 정렬해서 최솟값 출력! 

꽉 차있는 경우는 기존 명예의 전당에 있던 최솟값과 새로 추가 되는 i 번째 값을 비교한 후 새로 추가되는 값이 최솟값보다 크다면 기존값을 지우고 리스트에 새로운 값을 추가해주는 식으로 풀었다! 출력해야하는 값이 최솟값이므로 리스트의 0번째 값을 출력하도록 만들었다! 

import java.util.*;

class Solution {
    public int[] solution(int k, int[] score) {
        int[] answer = new int[score.length];
        int min = 0;
        List<Integer> list = new ArrayList<>();
        
        for(int i = 0; i< score.length; i++){
            if(list.size() < k){
                list.add(score[i]);
                Collections.sort(list);
                answer[i] = list.get(0);
            }else if(list.size() == k){
                min = list.get(0);
                if(min < score[i]){
                    list.remove(0);
                    list.add(score[i]);
                    Collections.sort(list);
                }
                answer[i] = list.get(0);
            }
        }
        return answer;
    }
}

 

댓글