두 가지 경우로 나눴다! 명예의 전당에 점수가 꽉 차지 않은 경우와 꽉 차있는 경우!
꽉 차있지 않은 경우는 그냥 선언한 리스트에 들어오는 점수를 추가해주고 정렬해서 최솟값 출력!
꽉 차있는 경우는 기존 명예의 전당에 있던 최솟값과 새로 추가 되는 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;
}
}
'Algorithm > 프로그래머스' 카테고리의 다른 글
[Lv. 2] JadenCase 문자열 만들기 (0) | 2023.09.17 |
---|---|
[Lv. 1] 로또의 최고 순위와 최저 순위 (0) | 2023.09.17 |
[Lv. 1] 푸드 파이트 대회 (0) | 2023.09.07 |
[Lv. 2] 점프와 순간 이동 (0) | 2023.08.20 |
[Lv. 1] 바탕화면 정리 (0) | 2023.08.20 |
댓글