function solution(array, commands) { let answer = []; commands.map(el => { let result; result = (array.slice(el[0]-1, el[1]).sort((a, b) => {return a - b}))[el[2]-1]; answer.push(result); }) return answer; }
오늘 문제의 핵심은 sort였다. 처음에 sort()로 사용하며 순서를 정의하지 않고 사용하였더니 테스트 2번에서 에러가 발생했다.
sort 메소드를 사용할 때 순서를 정의하는 함수를 넣지 않을 경우에는, 비교 대상을 모두 문자열로 변환하며 유니코드를 기준으로 정렬한다.
[1, 5, 10, 20, 16]을 정렬하는 경우, 순서를 정의하는 함수에 따라 아래와 같이 결과값이 달라진다.
1. sort(); // [1, 10, 16, 20, 5]
2. sort(function(a, b) {return a - b}); // [1, 5, 10, 16, 20]
:: 오름차순 (a - b)
3. sort(function(a, b) {return b - a}); // [20, 16, 10, 5, 1]
:: 내림차순 (b - a)