js 프로그래머스 K번째 수

이명진·2022년 10월 7일
0

코드카타

목록 보기
50/69

이전에 한번 풀었던 기억이 있다. 못풀었었나?
아무튼 그때 당시 어렵게 느껴졌었는데 계속 코테를 풀어서 인가 어떤 함수를 어떻게
사용해야 할지 바로 떠오르게 되었다.
배열에는 map함수 사용하기 다짐했었는데 이번에 또 사용하게 되었고
쉽게 풀수 있었다 .
내가 푼 로직은 아래와 같다

내가 푼 풀이

function solution(array, commands) {
    let answer = commands.map(x=>
                             {
      let reword  = array.slice(x[0]-1,x[1]).sort((a,b)=>a-b)
      return reword[x[2]-1]
    })
    return answer;
}

여기서 처음에 정렬을 위해서 sort()만 사용했었는데

2번 테스트만 틀리더라.. 그래서 sort(a,b=> a-b)를 써주었더니 그제서야 통과가 되었다.

근데 sort((a,b)=>{a-b}) 이렇게 썼는데 나머지가 다 틀렸다.
차이가 뭔지 모르겠다.

다른사람의 풀이를 보았다.

다른사람의 풀이

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]
    })
}

map과 디스트럭처링 을 사용하니 한결 가독성이 높다.
그리고 나는 slice를 사용했는데 filter함수를 사용했다.
filter 에 두번째 인자로 인덱스를 받을수 있다는 점을 깨닫게 되었고
필터로 인덱스로 배열을 자를수 있다는 점도 새롭게 알게 되었다.
대단한 분들이 많이 있다.

profile
프론트엔드 개발자 초보에서 고수까지!

0개의 댓글