본문 바로가기
Coding Test/JavaScript

[프로그래머스] K번째수 JavaScript Code

by giem 2022. 8. 16.
반응형

 

2022.08.16 - [Coding Test/Python] - [프로그래머스] K번째수 Python Code

2022.08.16 - [Coding Test/C++] - [프로그래머스] K번째수 C++ Code

2022.08.16 - [Coding Test/Python] - [프로그래머스] K번째수 Python Code

 

저번 포스트들에 이어 마지막으로 JS로 풀어보겠다.


문제


구현

파이썬 코드와 같이 slicing 후에

index값을 answer에 푸시한다.


코드
function solution(array, commands) {
    let answer = [];
    for(let cmd = 0; cmd < commands.length; cmd++){
      let [i,j,k] = commands[cmd]
      let slice = array.slice(i-1, j)
      answer.push(slice.sort()[k-1])
    }
    return answer;
}

이렇게 하면 테스트케이스에서 하나가 틀리길래 아래와 같이 바꿔보았다.

 

function solution(array, commands) {
    let answer = [];
    for(let cmd = 0; cmd < commands.length; cmd++){
      let [i,j,k] = commands[cmd]
      let slice = array.slice(i-1, j)
      answer.push(slice.sort((a, b) => a - b)[k-1])
    }
    return answer;
}

이유는 sort가 문자열의 유니코드를 따라서 정렬하기에

숫자 정렬시 우리가 생각하는 정렬이 되지 않는다고 한다.

아래 링크를 참고했다.

https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Global_Objects/Array/sort


다른 풀이
function solution(array, commands) {
    return commands.map(v => {
        return array.slice(v[0] - 1, v[1]).sort((a, b) => a - b).slice(v[2] - 1, v[2])[0];
    });
}

약간 읽기는 어렵지만 숏 코딩을 하신 분 코드이다.

 

로직은 위의 풀이와 똑같다.

반응형

댓글