2. 정렬 - K번째수
한 개의 테스트에서 걸렸다. 처음에 생각해본 경우의 수는 commands의 [5,1,3] 처럼 startIndex > endIndex인 경우 등 돌발상황이 생길 때가 아닐까 생각해보았다. 혹은 길이가 10인 배열이 파라미터로 들어왔을 때, 그 배열의 길이가 넘어가는 인덱스 값이 들어왔다거나. ('15번 째 요소를 구하라' 라던지..)
그런데 정답은 문제의 주제에 맞게 정렬 함수에 대한 것이었다. 그래서 자바스크립트에선 정렬 함수를 어떻게 써야 하는지 mdn의 sort function에 대한 내용을 보았다.
실제 내용은 이보다 더 길다. sort안에 배열의 두 원소를 어떻게 비교할 것인지에 대한 비교함수를 넣었을 때와 넣지 않았을 때 어떻게 정렬이 되는지 원문에선 상세히 적혀져있다.
따로 compareFunction을 정의하지 않으면, undefined가 아닌 모든 배열의 요소들은 UTF-16 code에 의해 정의된 문자열로 변형된 다음, 그 순서에 따라 정렬된다. 이 규칙에서는 80이 9보다 오히려 더 작다. 90과 9을 비교하는 게 아니라, "80"과 "9"를 비교하기 때문이다.
그래서 오름차순으로 비교하고 싶다면 sort((a,b)=>a-b) 이런 식으로 적어준다. 이는 자바스크립트 내장함수인데 두 원소를 비교한다음 큰 원소를 뒤로 보낸다.
function solution(array, commands) {
var answer = [];
commands.forEach((command)=>{
answer.push(array.slice(command[0]-1,command[1]).sort((firstNum,secondNum)=>firstNum-secondNum)[command[2]-1]);
})
return answer;
}
arr = [1,2,10]
arr.sort()
arr.sort((firstNum,secondNum)=>firstNum-secondNum)
... ... ... ... ... ... ... ... ... ... ... ...
>> [1,10,2] //
>> [1,2,10] //
References
- Array.prototype.sort() -
(https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/sort)
Author And Source
이 문제에 관하여(2. 정렬 - K번째수), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@hion8800/2.-정렬-K번째수저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)