본문 바로가기

항해99_10기/[2주차] 알고리즘 문제풀이

[29번][중급] K번째 수

나의 답

[pseudo code]
1. shallow copy 문제로, array의 값을 stringify 했다가 다시 배열로 만들어 줘야 함 => shallow copy가 아니라, split 함수 자체가 원본을 자르는 것임..! (temp = array.split(1,1)을 했다면, temp 값에는 원본에서 잘라낸 배열을, array 배열에는 부분이 잘려나간 나머지를 리턴해주는 것임!!)
2. 자른 배열을 받을 temp = []생성, answer =[]생성
2. command는 배열 속의 배열로 되어 있음 -> 루프를 돌면서 각 배열을 받아오기
    - temp 변수를 선언하고, 루프 밖에서 만들어 둔 array의 string 값을 가져와 split 해줌
    - i 값은 0번째, j 값은 1번째, k 값은 2번째
    - temp = splice(i-1, (j-i+1))로 담아주고 sort로 오름차순 정렬
    - temp[k-1] 값을 answer에 푸쉬
3. return answer

 

function solution(array, commands) {
  const str = array.join(" ");
  let answer = [];

  for (c of commands) {
    let temp = str.split(" ");
    let i = c[0],
      j = c[1],
      k = c[2];
    temp = temp.splice(i - 1, j - i + 1).sort((a, b) => a - b);
    answer.push(Number(temp[k - 1]));
  }
  return answer;
}

console.log(
  solution(
    [1, 5, 2, 6, 3, 7, 4],
    [
      [2, 5, 3],
      [4, 4, 1],
      [1, 7, 3],
    ]
  )
);