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

알고리즘 풀러가기🔍

📕 문제

array를 commands[0]부터 commands[1]까지 자른 후 오름차순 한다.
commands[2]번째 요소를 반환한다.


입출력 예시

array
commands
출력
[1, 5, 2, 6, 3, 7, 4]
[[2, 5, 3], [4, 4, 1], [1, 7, 3]]
[5, 6, 3]

💡 풀이

var solution = (arr, cmds) => {
  return cmds.map((v, i) => {
    var slice_arr = arr.slice(v[0] - 1, v[1])
    slice_arr.sort((a, b) => a - b)
    return slice_arr[v[2] - 1]
  })
}

solution(
  [1, 5, 2, 6, 3, 100, 7, 4],
  [
    [2, 5, 3],
    [4, 4, 1],
    [1, 7, 3],
  ]
)
  1. commands가 2차원 배열이므로, map을 통해 각 조건에 접근함.
  2. 조건의 0부터 1번째 숫자까지 배열을 자름.
  3. 자른 배열을 오름차순으로 정렬함. sort는 문자열기준으로 정렬하므로, 비교함수를 넣음.
  4. 조건의 3번째 숫자에 위차한 배열 요소를 반환함.

Written by@[owlssi]
프론트 공부 중입니다.

GitHub