티스토리 뷰

배열 array [1,5,2,6,3,7,4]의 값을 i번째 숫자부터 j번째 숫자까지 자르고 정렬했을 때 k번째의 있는 수를 구한다.

1. i번째 숫자부터 j번째 숫자까지 자른다. -> .slice() 사용

2. 배열을 순서대로 정렬한다. -> .sort() 사용

3. k번째 수를 commands에 적용

 

입출력 예 설명

[1, 5, 2, 6, 3, 7, 4]를 2번째부터 5번째까지 자른 후 정렬합니다. [2, 3, 5, 6]의 세 번째 숫자는 5입니다.
[1, 5, 2, 6, 3, 7, 4]를 4번째부터 4번째까지 자른 후 정렬합니다. [6]의 첫 번째 숫자는 6입니다.
[1, 5, 2, 6, 3, 7, 4]를 1번째부터 7번째까지 자릅니다. [1, 2, 3, 4, 5, 6, 7]의 세 번째 숫자는 3입니다.

 

function solution(array, commands) {

    let arraySlice01 = array.slice(1,5).sort();
  let arraySlice02 = array.slice(3,4).sort();
    let arraySlice03 = array.slice(0,8).sort();
    
    commands =[arraySlice01[2],arraySlice02[0],arraySlice03[2]]
    return commands;
}

 

테스트 통과 ^~^ 였지만 다시풀었다

 

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

위 코드로 풀경우, commands 매개변수를 잘 활용하지 못해서 활용하면서 풀 방법을 찾았다. 

.sort()로 푸는것보다 .sort((a,b)=>a-b)로 푸는 것이 오름차순으로 순서가 정해진다.

댓글