잿꽃's posting Garden

프로그래머스에서 코딩테스트 연습2 - k번째 수 본문

WEB/코딩테스트 연습

프로그래머스에서 코딩테스트 연습2 - k번째 수

잿꽃 2022. 5. 13. 00:55

임의의 배열에서 임의의 숫자~임의의 숫자 내에서 임의의 숫자 번째를 추출하기

 

ex) 배열[1,5,2,6,3,7,4]에서 [2,5,3]를 입력하면 2번째 배열에서 5번째 배열까지를 추출한다.

추출한 [2,3,5,6] 3번째 배열은 5를 얻을 수 있다.

 

요청값이 여러 번일 수 있으므로 for in을 이용했다.

slice(num1, num2)로 인덱스 값이 num1~num2전까지 가져올 수 있다.

추출한 값이 오름차순으로 새로 배열되어야 하므로 sort를 사용하였다.

이 값을 결과 값으로 push를 통해서 넣었다.

 

function solution(array, commands) {
    var answer = [];
    let i = 0;
    let result = [];
    for(index in commands){
        result = array.slice(commands[index][i]-1, commands[index][i+1]);
        result.sort(function(a,b){return a-b});
        answer.push(result[commands[index][i+2]-1]);
    }
    
    return answer;
}

slice()는 두 번째 배열 값의 전까지만 가져오기 때문에 가져오려는 값의 다음 인덱스까지 범위를 설정해 줘야 한다.

애매하게 알고 있던 부분을 다시 짚어볼 수 있었던 것 같다.

또한 result.sort()부분에서 result가 중복임으로

result = array.slice(commands[index][i]-1, commands[index][i+1]).sort(function(a,b){return a-b});

라고도 작성할 수 있다.

 

sort로 오름차순, 내림차순 정렬을 알고 있어서 빨리 풀 수 있었던 거 같다.

 

 

728x90
Comments