우당탕탕 개발일기

[프로그래머스 / 자바스크립트] K번째수 본문

What I Learned/Algorithm

[프로그래머스 / 자바스크립트] K번째수

rilee 2022. 1. 25. 11:41
728x90

문제만 읽었을 때 파악해본 것은

✔️array의 i ~ j번째는 배열 내에서 i-1번째 ~ j-1번째

✔️배열 자르기는 slice

✔️그럼 slice를 쓰고 sort로 정렬 한 번 시킨 후 배열 내의 k-1번째 값 리턴하기

 이 정도였다. 문제 자체는 파악하기가 쉬웠다.

문제는 commands값이 2차원 배열로 되어있어 리턴할 내용이 여러개라는 것.. 🤯

(= 내가 잘 못하는 것들 중 하나)

행렬의 덧셈부터 2차원 배열에 치여버린 나는 이거 보고 한숨 푹..for중첩문을 돌려야할까?

 

 

일단 간단하게 생각해서 돌려봤는데 commands[0]의 결과값이 도출되긴 했다.

그런데 문제는 1️⃣ return이 for문 바깥으로 나오면 값 도출이 어렵다는 것과

2️⃣ +=로 붙여주어도 commands[i]의 값들이 모여지지 않는다는 것.

 

return값이 꼭 for문 밖에 없어도 되는걸까? 왜 갑자기 합치기가 안되지? push로 값을 넣어야하나?

알고리즘 며칠 쉬었다고 더 빡대가리가 된걸까,,,

 

 

💡 나의 최종 코드

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

그러다가 retrun쪽만 push로 밀어넣어보자하고 했는데 갑자기 됐다!

배열 안에 여러 요소들을 모아둘 땐 push!! 오늘의 포인트는 push!!

 

 

📍출처

https://programmers.co.kr/learn/courses/30/lessons/42748

 

코딩테스트 연습 - K번째수

[1, 5, 2, 6, 3, 7, 4] [[2, 5, 3], [4, 4, 1], [1, 7, 3]] [5, 6, 3]

programmers.co.kr

 

728x90