[프로그래머스 | javascript] K번째수 (정렬)

728x90
반응형

(1) 내 풀이

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

* commands = [[2, 5, 3], [4, 4, 1], [1, 7, 3]]

 

1. map을 돌려서 각각의 배열의 index를 사용함

2. slice를 사용하여 구간 값 추출

3. sort를 사용하여 오름차순 정렬

4. filter를 사용하여 k번째수 추출 ==> [[3],[1],[3]] 이 나옴

5. flat을 사용해서  해결 완료

 

(2) 다른사람 풀이

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을 사용했었는데

다음에는 구조분해할당으로 해야겠다!

 

 

반응형