CodeKata/JS

CodeKata_js_48_K번째수

explosion149 2024. 11. 18.

 

이렇게 숫자가 있다 가정하면

 

2번부터 5번까지 정렬한 뒤 3번째

해당 번호에 -1 하여 0번을 1번으로 맞춰준다.

그리고

2번 부터 5번까지 자르면

해당 값을 정렬하면

해당 값의 3번째

값 5

 

이러한 방식으로 입력을 3번 받아서

 

배열 [a,b,c] 를 받아와야 한다.

 

입력은 배열 안에 배열

[[2,5,3],[4,4,1],[1,7,3]] 으로 받아온다.

 

여기서는 구조분해 할당을 사용하여

let [i,j,k] of commands를 사용해준다.

 

function solution(array, commands) 
{
    let answer = [];
    // 구조 분해 할당
    for (let [i, j, k] of commands) 
    {
       
    }
    return answer;
}

 

 

이렇게 되면 i, j, k 각각에는

 

i,j,k= [2,5,3]

i,j,k = [4,4,1]

i,j,k = [1,7,3]

 

의 값이 할당 될것이다.

 

그럼 이제 글자를 잘라보자!

 

function solution(array, commands) 
{
    let answer = [];
    for (let [i, j, k] of commands) 
    {
        //글자를 잘랐다!
		let temp = array.slice(i - 1, j);
        
    }
    return answer;
}

array = [1,5,2,6,3,7,4]
i, j, k =[2,5,3]

해당 글자를 잘랐다.

첫번째

temp 에는 2 -1 = 1 index 부터 5 [해당 기능 내부(-1) for 문이 n<5 만큼 회전] 4번 index 까지 자른다!

 

 

실행하여 결과물

 

 

여기까지 왔으니 이제 정렬해야한다.

 

function solution(array, commands) 
{
    let answer = [];
    for (let [i, j, k] of commands) 
    {
        let temp = array.slice(i - 1, j);
        temp.sort((a, b) => a - b);
        //정렬 오름차순
    }
    return answer;
}

 

정렬하면

여기에서 순서

k 값의 3번

 

값 5를 들고와야한다.

function solution(array, commands) 
{
    let answer = [];
    for (let [i, j, k] of commands) 
    {
        let temp = array.slice(i - 1, j);
        temp.sort((a, b) => a - b);
        answer.push(temp[k - 1]);
        // k - 1값을 들고온다.
    }
    return answer;
}

해당 index는 0부터 시작하니 -1을 해주고

answer에 집어넣어주면

answer =[5] 가 된다

 

두번째 값 

i,j,k = [4,4,1]

 

4번에서 4번까지

값이 6 밖에 없다

 

여기서 정렬하고 1번을 가져와도

 

값은  6이다.

현재 값 answer =[5,6]

 

3번

 

i,j,k = [1,7,3]

 

 

모든 값을 다 가져온다

그리고 해당값을 정렬하면

 

순서대로 1부터 7까지

여기서 k =3

그럼 값은 3이되고

 

 

answer =[5,6,3];

 

끝!!

댓글

💲 추천 글