Heman 2021. 6. 21. 20:55

프로그래머스 : K번째수

https://programmers.co.kr/learn/courses/30/lessons/42748

문제풀이

풀이는 문제에 주어진 대로 그대로 수행하시면 됩니다.

코드

function solution(array, commands) {
    let answer = [];
    // 결과를 담을 배열을 선언 및 초기화

    for(let i=0; i<commands.length; i++){
        let tmp = array.slice(commands[i][0]-1, commands[i][1]);
        // commands 배열내 i번째 배열의 첫번째 수와 두번째 수를 활용하여,
        // array 배열을 잘라 임시 배열인 tmp에 넣어줍니다

        tmp.sort((a,b) => a-b);
        // 오름차순으로 정렬

        answer.push(tmp[commands[i][2]-1]);
        // 결과 배열에 i번째 commands 배열의 3번째 수를 찾아 넣어줍니다
    }

    return answer;
}

 

리뷰

이 문제는 어렵지 않은 문제지만, sort() 함수 부분에서 정확히 a-b 대소관계를 정의해주지 않으면 통과가 되지 않습니다.

sort()는 문자열을 정렬해주는 함수입니다.

이 함수를 그대로 사용하게 되면 [50, 100] 과 같은 배열에서 1을 포함하고 있는 1005를 포함한 50보다 더 작은 문자열로 인식하여 [100, 50] 으로 정렬하기 때문입니다.