728x90
먼저 명예의전당에 들어갈 점수 리스트를 만들고 k일차 까지는 모든 점수를 다 넣어준다.
그리고 리스트를 정렬해주고, 그러면 0번인덱스가 자동으로 가장 최하위 점수가 된다.
최하위점수 리스트 만든곳에 0번인덱스를 추가해준다.
k일차가 지나고 나서 부터는 명예의전당 리스트 점수 중 최하위 점수를 제거하고 새로운 점수를 리스트에 추가한다.
그리고 다시 명예의 전당 리스트를 한번 더 정렬해주고 최하위 점수인 0번인덱스를 최하위점수 리스트에 추가한다.
import java.util.*;
class Solution {
public int[] solution(int k, int[] score) {
int[] answer = new int[score.length];
List<Integer> num = new ArrayList<>(); // 명예의 전당 점수 리스트
List<Integer> sNum = new ArrayList<>(); // 최하위 점수 리스트
for(int i=0; i<score.length; i++) {
if(i<k) {
// 명예의 전당 k일차까지는 모든 점수 다 등록
num.add(score[i]);
num.sort(null);
sNum.add(num.get(0));
}else {
// k일차 지나고 나서
// 명예의 전당 최하위 점수
// sort 로 정렬해주었기 때문에 0번 인덱스가 항상 최하위점수
int min = num.get(0);
// min보다 점수가 클 경우
if(min <= score[i]) {
// 0번인덱스(최하위점수) 제거, 새로운 점수 추가
num.remove(0);
num.add(score[i]);
// 점수별로 정렬
num.sort(null);
}
// 0번 인덱스가 최하위 점수 == 최하위점수 리스트에 추가
sNum.add(num.get(0));
}
}
// answer배열에 최하위점수 리스트 넣어주기
for(int i=0; i<answer.length; i++) {
answer[i] = sNum.get(i);
}
return answer;
}
}
'프로그래머스' 카테고리의 다른 글
프로그래머스 가장 가까운 같은 글자(JAVA) (0) | 2023.11.27 |
---|---|
프로그래머스 2016년 (0) | 2023.11.23 |
프로그래머스 무작위로 K개의 수 뽑기 (0) | 2023.11.13 |
프로그래머스 JadenCase 만들기 (0) | 2023.11.11 |
프로그래머스 알고리즘 유클리드 호제법(최대공약수, 최소공배수) (1) | 2023.10.30 |