[programmers-js] K번째수

hooray·2022년 7월 7일
0

문제 이해

  • 배열에 있는 값을 자르는 문법을 아는가?
  • 값을 정렬 할 수 있는가

내가 작성한 답안

function solution(array, commands) {
    let answer = []
    for (let i = 0; i < commands.length; i++) { 
        answer.push(array.slice(commands[i][0] - 1, commands[i][1]).sort((a, b) => a - b)[commands[i][2] - 1])
    }
    return answer
}
  • 반복되는 작업을 수행하기에 for문을 사용하였으며,값을 자는 것은 slice를 사용하며 원본 배열을 변경하지않고 새로운 array를 생성하여 return 하였음

다른사람의 풀이

function solution(array, commands) {
    return commands.map(command => {
        const [sPosition, ePosition, position] = command
        const newArray = array
            .filter((value, fIndex) => fIndex >= sPosition - 1 && fIndex <= ePosition - 1)
            .sort((a, b) => a - b)

        return newArray[position - 1]
    })
}
  • slice(a,b)문법에서 b가 짜를 마지막 index를 말하는데, 마지막 인덴스는 미포함하며 새로운 배열을 반환한다.
  • 얕은 복사 slice 함수를 사용할 경우, 원본배열은 변하지 않음
  • const [sPosition, ePosition, position] = command 와 같은 배열 디스트럭처링(구조분해할당)을 쓰게되면 좀 더 가독성 높은 코드를 작성할 수 있음
  • filter, map은 배열을 훼손하지 않고 새로운 배열을 만들어서 리턴함
profile
Stay hungry. Stay foolish.

0개의 댓글