[LeetCode] Minimum Difference Between Highest and Lowest of K Scores

준규·2022년 10월 24일
0

인덱스가 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을 해보니

정답이었다!

profile
안녕하세요 :)

0개의 댓글