[프로그래머스/Javascript] K번째수

TED·2023년 8월 29일
0

Javascript CodingTest

목록 보기
15/63
post-thumbnail

< 오늘의 문제 >

  1. K번째수

k번째 수

function solution(array, commands) {
  var answer = [];

  for (let i = 0; i < commands.length; i++) {
    let temp = [];
    temp = array.slice(commands[i][0] - 1, commands[i][1]); // -1을 해야 인덱스값을 얻을 수 있다 ㅇㅋ?
    temp.sort((a, b) => a - b)                              // slice 함수를 통해 얻는 괄호안의 값은 array의 인덱스값을 구해야하니까. 
    answer.push(temp[commands[i][2] - 1]); // i=0 -> temp[2], i=1 -> temp[2], i=2 -> temp[2]
  } // commands 는 인덱스 0~2까지만 값을 가지고있고,
    // 오름차순한뒤 인덱스 2번째값이 k번째 값을 나타내는거지.
  return answer;
}
  • 나의 풀이
    : 일단 배열을 from to 로 잘라내야 하기때문에 slice 메서드를 이용해야겠다고 생각했고,
    아침에 일어나자마자 풀이를 해서 그런가 commands.length값과 commands 인덱스 값의 차이를 두고
    코딩해야하는 걸 까먹어서 한참 생각하고말았다.
    주석은 내가 나에게 조언하는 느낌으로 항상 달고있는데, 정보를 원하시는 분들께서도 와닿을지는 모르겠다..
    commands[i][0] - 1, commands[i][1] 이 부분이 이해가 안된다면 다시 풀어서 설명해보겠다..
    commands[i][0] - 1 -1의 이유는 commands의 예시를 [2, 5, 3] 으로 들었을때
    결국 slice(1,5) 되는건데 이는 arr[1]~arr[5] 의 slice값을 구하게되는거다.. slice의 to값은 포함이 안되고
    그 전의 요소까지만 출력이된다!
    이 후 오름차순으로 값을 정렬한뒤, commands[i][2] - 1]temp[2] 를 구하게하여, k번째값을 나타내게한다.
profile
컴맹 개발 입문자

0개의 댓글