본문 바로가기
개발로그/알고리즘

[JS] 프로그래머스 Lv.1 K번째 수

by 쩜징 2024. 1. 16.

[JS] 프로그래머스 Lv.1 K번째 수

 

문제

- 배열 array의 i번째 숫자부터 j번째 숫자까지 자르고 

  정렬했을 때, k번째에 있는 수를 구하라.

- 배열 array와 [i, j, k]를 원소로 가진 2차원 배열 commands가 매개변수로 주어진다.

- 연산을 적용한 결과를 배열에 담아 return하라.

 

제한사항

- array의 길이는 1 이상 100 이하

- array의 각 원소는 1 이상 100 이하

- commands의 길이는 1 이상 50 이하

- commands의 각 원소는 길이가 3

 

예시

array commands return
[1,5,2,6,3,7,4] [ [2,5,3], [4,4,1], [1,7,3]] [5,6,3]

 

 

풀이

1. forEach 함수로 commands의 원소들에 접근한다.

2. commands의 원소들은 [i, j, k]로 이루어져 있으므로,

    i = x[0] / j = x[1] / k = x[2]라고 볼 수 있다.

3. 슬라이싱 할 때는 배열의 인덱스를 고려해서 잘라준다.

    arr = array.slice(x[0]-1, x[1]);

4. 슬라이싱 한 새로운 배열을 오름차순 정렬해준다.

    arr.sort((a, b) => a - b);

5. answer 배열에 k-1번째 인덱스에 있는 원소를 넣어주면 끝!

    answer.push(arr[x[2] - 1);

 

<> 전체 코드 </>

function solution(array, commands) {
    var answer = [];
    var arr = [];
    commands.forEach((x)=> {
        arr = array.slice(x[0]-1, x[1]);
        arr.sort((a,b)=> a-b);
        answer.push(arr[x[2]-1]);
    })
    return answer;
}

 

 

반응형

댓글