프로그래머스 코딩테스트 1단계.K번째수(JavaScript)

부기·2022년 1월 28일

일단 이 문제는 두 개의 매개변수가 주어지고 하나는 1차원배열, 하나는 2차원배열.

문제 설명

배열 array의 i번째 숫자부터 j번째 숫자까지 자르고 정렬했을 때, k번째에 있는 수를 구하려 합니다.

예를 들어 array가 [1, 5, 2, 6, 3, 7, 4], i = 2, j = 5, k = 3이라면

array의 2번째부터 5번째까지 자르면 [5, 2, 6, 3]입니다.
1에서 나온 배열을 정렬하면 [2, 3, 5, 6]입니다.
2에서 나온 배열의 3번째 숫자는 5입니다.
배열 array, [i, j, k]를 원소로 가진 2차원 배열 commands가 매개변수로 주어질 때, commands의 모든 원소에 대해 앞서 설명한 연산을 적용했을 때 나온 결과를 배열에 담아 return 하도록 solution 함수를 작성해주세요.

내 코드

function solution(array, commands) {
  let newArray = [];
  let returnArray = [];
  for (let index = 0; index < commands.length; index++) {
    let i = commands[index][0];
    let j = commands[index][1];
    let k = commands[index][2];
    let sortArray = [];
    newArray = array.slice(i - 1, j);
    sortArray = newArray.sort((a, b) => a - b);
    returnArray.push(sortArray[k - 1]);
  }
  return returnArray;
}
  1. 일단 commands의 배열을 통해서 i와 j와 k의 값이 달라져야하기 때문에 for문을 commands의 길이 이하로 돌렸다. 돌리면서 i, j, k의 값을 바꿔줬다.
  2. 배열 array를 i번째부터 j번째 숫자까지 자른것을 newArray에 할당해줬다. slice를 이용하여 잘라줬는데 slice는 시작인덱스를 포함하지만 종료인덱스는 포함하지 않기때문에 -> 아 이거 좀 더 쉽게 어떻게 설명하지 .. . . . ..
  3. 오름차순으로 정렬을 해야해서 sort메소드를 활용하여 a - b로 오름차순으로 정렬을 해서 sortArray에 할당했다.
  4. 이 sortArray에서 k번째 배열에서는 [k-1]이기때문에 이 값을 returnArray라는 배열에 값을 넣어준다.
  5. for문을 돌면서 returnArray에 요소가 push되고 for문이 끝난 후 return을 하면 원하는 값을 얻을 수 있다.
profile
무럭무럭 자라는 중 ∙∙∙🌱🐣

0개의 댓글