https://programmers.co.kr/learn/courses/30/lessons/42748
코딩테스트 연습 - K번째수
[1, 5, 2, 6, 3, 7, 4] [[2, 5, 3], [4, 4, 1], [1, 7, 3]] [5, 6, 3]
programmers.co.kr
첫번째 풀이 (일부 케이스 틀림)
function solution(array, commands) {
var answer = [];
commands.forEach((cmd) => {
var start = cmd[0];
var end = cmd[1];
var num = cmd[2];
var target = array.slice(start - 1, end).sort()[num - 1];
answer.push(target);
});
return answer;
}
두번째 풀이 (정답)
function solution(array, commands) {
var answer = [];
commands.forEach((cmd) => {
var start = cmd[0];
var end = cmd[1];
var num = cmd[2];
var target = array.slice(start - 1, end).sort((a, b) => a - b)[num - 1];
answer.push(target);
});
return answer;
}
- sort() 의 functionless 버전과 sort(comparefunction)의 차이를 알아야 한다.
전자도 정렬은 되지만 문자로서 정렬하기 때문에 한 자릿수에서는 큰 문제가 없지만 두자리가 넘어가는 수를 정렬할 때는 문제가 생긴다.
ex) sort()로 [15, 2, 4] 를 정렬하면 [2, 4, 15] 가 아니라, [15, 2, 4] 로 정렬한다. 문자로 인식하기 때문.
그러므로 제대로 정렬하기 위해서는 위와 같은 comparefunction을 넣어줘야 한다. (현재 케이스는 오름차순)
'알고리즘' 카테고리의 다른 글
[프로그래머스/자바스크립트] 스택/큐_프린터 (0) | 2021.11.10 |
---|---|
[프로그래머스/자바스크립트] 스택/큐_기능개발 (0) | 2021.11.09 |
[프로그래머스/자바스크립트] 해시 - 베스트앨범 (0) | 2021.11.08 |
[프로그래머스/자바스크립트] 해시 - 위장 (0) | 2021.11.04 |
[프로그래머스/자바스크립트] 해시 - 완주하지 못한 선수 (0) | 2021.11.03 |
댓글