[문제 바로가기]
[ 문제 파악 ]
1. 주어진 수를 가지고
2. 배열을 자르고 + 오름차순(중요) 정렬후 //slice(start, end), sort({ compareFunction(a,b) })
3. 정렬한 배열에서 하나 뽑아내기
[ 적용한 풀이 ]
function solution(array, commands) {
var answer = [];
answer = commands.map(command =>{
let first = command[0]-1;
let last = command[1];
let pick = command[2]-1;
// if (first === last) last+= 1
let result = array.slice(first, last).sort(function(a, b){
return a-b
})
return result[pick]
})
return answer;
}
[해결 과정 중 실수한 부분 / 잡담]
문제를 풀다보니 기본적으로 제공되는 함수에 대해서 디테일하게 배울 수 있다는 장점이 있다.
slice([start,[end]])에서 slice 는 end 인덱스를 제외하고 추출합니다.
sort(compareFunction(a,b))는 compartFunction을 내가 오름차순이냐 내림차순이냐를 정할 수 있다.
기본적으로 정하지 않았을 땐 유니코드 포인트로 분석되므로 문자열로 변환된 숫자들의 경우 일반적인 오름차순의 형태가 아닐 수 있다.
(MDN 설명 : 숫자 정렬에서는 9가 80보다 앞에 오지만 숫자는 문자열로 변환되기 때문에 "80"은 유니 코드 순서에서 "9"앞에옵니다.)
심지어 compareFunction에 대해서는 코딩애플에서 한번 배운 기억이 있다.
Array.prototype.slice() - JavaScript | MDN
slice() 메서드는 어떤 배열의 begin부터 end까지(end 미포함)에 대한 얕은 복사본을 새로운 배열 객체로 반환합니다. 원본 배열은 바뀌지 않습니다.
developer.mozilla.org
Array.prototype.sort() - JavaScript | MDN
sort() 메서드는 배열의 요소를 적절한 위치에 정렬한 후 그 배열을 반환합니다. 정렬은 stable sort가 아닐 수 있습니다. 기본 정렬 순서는 문자열의 유니코드 코드 포인트를 따릅니다.
developer.mozilla.org
'[개발] 코딩테스트 > 프로그래머스' 카테고리의 다른 글
[프로그래머스] 체육복 / Javascript (0) | 2022.04.27 |
---|---|
[프로그래머스] 모의고사 /Javascript (1) | 2022.04.23 |
[프로그래머스]소수 만들기 / Javascript (0) | 2022.04.20 |
[프로그래머스] 문자열 압축 / Javascript (0) | 2022.04.16 |
[프로그래머스] 없는 숫자 더하기 / Javascript (0) | 2022.04.15 |
댓글