인덱스가 0부터 시작하는 nums 라는 숫자 배열이 있을 때 i번째 인덱스의 값은 i번째 학생의 점수라고 한다.
그리고 정수 k가 주어지는데 nums 중 k개의 점수를 골랐을 때 고른 점수 중 가장 큰 값과 작은 값의 차이의 최솟값을 리턴하는 문제이다.
Example을 보자
const minimumDifference = function (nums, k) {
if (k === 1) return 0;
nums.sort((a, b) => b - a);
let minimum = Infinity;
for (let i = 0; i < nums.length - k + 1; i++) {
let temp = [];
for (let j = i; j < k + i; j++) {
temp.push(nums[j]);
}
minimum = Math.min(temp[0] - temp[k - 1], minimum);
}
return minimum;
};
먼저 k 가 1 인경우는 최솟값이 0 이므로 0을 리턴해줌으로서 예외 처리를 해주었다.
k 가 2이상일 때 부터 nums 를 내림차순으로 먼저 정렬을 해주고
nums를 맨 앞에서부터 k개씩 범위를 잡으면서 부분 배열의 최댓값과 최솟값의 차를 minimum 값과 비교를 해주었고 최솟값이 나온다면 minimum 값을 갱신 시켜주었다.
for문이 끝난 다음 minimum을 리턴해주었다.
submit을 해보니
정답이었다!