[ALGORITHM NINJA] 정렬 1번 k번째 수

NinjaJuunzzi·2021년 5월 16일
0

구현

function solution(array, commands) {
  var answer = [];
  commands.forEach((command) => {
    const [i, j, k] = command;
    const commandResult = array.slice(i - 1, j).sort((a, b) => {
      return a - b;
    });
    answer.push(commandResult[k - 1]);
  });
  return answer;
}
console.log(
  solution(
    [1, 5, 2, 6, 3, 7, 4],
    [
      [2, 5, 3],
      [4, 4, 1],
      [1, 7, 3],
    ]
  )
);

문제점

  • 테스트 케이스 2번만 실패하는 문제점 발생.

다음의 코드를 보자

array1 = [1, 30, 4, 21, 100000];
console.log(array1.sort());
// array1 = [1, 100000, 21, 30, 4];

자바스크립트는 sort안에 compareFunction이 제공되지 않으면 유니코드 포인터 순서로 문자열을 비교해서 정렬한다.
허나 우리는 숫자값으로 비교해서 정렬해야하므로

다음과 같이 sort함수에 비교함수를 넣어주자

const commandResult = array.slice(i - 1, j).sort((a, b) => {
      return a - b; 
    });

해결 및 느낀점

  • sort에 대해 또 배웠다

Reference

profile
Frontend Ninja

0개의 댓글