js 프로그래머스 K번째 수

이명진·2022년 10월 7일
0

코드카타

목록 보기
50/74

이전에 한번 풀었던 기억이 있다. 못풀었었나?
아무튼 그때 당시 어렵게 느껴졌었는데 계속 코테를 풀어서 인가 어떤 함수를 어떻게
사용해야 할지 바로 떠오르게 되었다.
배열에는 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개의 댓글

관련 채용 정보