본문 바로가기
[개발] 코딩테스트/프로그래머스

[프로그래머스] K번째수 / Javascript

by hmmmm_ 2022. 4. 21.

[문제 바로가기] 

정렬 > K번째수  (Lv.1)

   

[ 문제 파악 ]

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()

 

Array.prototype.slice() - JavaScript | MDN

slice() 메서드는 어떤 배열의 begin부터 end까지(end 미포함)에 대한 얕은 복사본을 새로운 배열 객체로 반환합니다. 원본 배열은 바뀌지 않습니다.

developer.mozilla.org

- Array.prototype.sort()

 

Array.prototype.sort() - JavaScript | MDN

sort() 메서드는 배열의 요소를 적절한 위치에 정렬한 후 그 배열을 반환합니다. 정렬은 stable sort가 아닐 수 있습니다. 기본 정렬 순서는 문자열의 유니코드 코드 포인트를 따릅니다.

developer.mozilla.org

댓글