문제
https://school.programmers.co.kr/learn/courses/30/lessons/138477
접근 방법 및 풀이
상위 k번째 점수와 당일 노래의 점수와 비교하여 최저점의 목록을 반환해야 하므로 점수를 비교 할 목적의 배열을 k + 1 길이로 선언한 다음에 노래의 점수가 0점이 존재 하므로 0점을 고려하여 -1로 초기화
당일 노래의 점수를 0번째에 할당하고 오름차순으로 정렬하면 점수 비교 배열에서 1번째에서 k번째 사이에서 -1이 아닌 점수 중 가장 낮은 점수가 그 날의 명예의 전당의 가장 낮은 점수
import java.util.Arrays;
public class Q30_138477 {
public int[] solution(int k, int[] score) {
int length = score.length;
int[] list = new int[k + 1];
for (int i = 0; i < k + 1; i++) {
list[i] = -1;
}
int[] answer = new int[length];
for (int i = 0; i < length; i++) {
int number = score[i];
list[0] = number;
Arrays.sort(list);
answer[i] = getMinScore(list);
}
return answer;
}
/**
* 1번째 이상에서 -1이 아닌 수에서 가장 빠른 인덱스의 값을 반환
* 오름차순으로 정렬된 배열인 경우에는 -1이 아닌 가장 낮은 값을 반환하게 됨
*/
public int getMinScore(int[] score) {
int length = score.length;
for (int i = 1; i < length; i++) {
int number = score[i];
if (number != -1) {
return number;
}
}
return 0;
}
}