본문 바로가기
기초다지기/JS 코딩테스트

javaScript 배열 계산 후 k번째 수 구하기

by 김빵그 2023. 11. 22.

문제 

배열 array 가 주어질 때
i번째 숫자부터 j 번째 숫자를 자르고 정렬한 후 k 번째에 있는 수를 구하여라

나의 풀이 

function solution(array, commands) {
    var answer = [];
    for(const [i, j, k] of commands) {
        const arraySlice = array.slice(i - 1, j); 
        const arraySort = arraySlice.sort((a,b)=>a-b);
        answer.push(arraySort[k - 1])
        // console.log(i, j, k)
    }
   
    return answer;
}
  • for ... of 
    • arraySlice :  배열을 i -1 부터 j까지 자른다
    • arraySort : 슬라이스한 배열을 오름차순으로 정렬한다
    • answer 빈 배열에 k - 1 번째 요소를 추가한다

다른 풀이

function solution(array, commands) {
    var answer = [];

    answer = commands.map(a=>{
        return array.slice(a[0]-1,a[1]).sort((b,c)=>b-c)[a[2]-1];
    })
    return answer;
}
  • map
    • commands 배열을 순회하며 새로운 배열을 생성한다
    • 각각의 i, j , k에 대한 필요한 연산 수행
function solution(array, commands) {
    let answer = [];
    for(let i = 0; i < commands.length; i++){
      let eachCommand = commands[i]
      let slice = array.slice(eachCommand[0] - 1, eachCommand[1])
      answer.push(slice.sort((a, b) => a - b)[eachCommand[2] - 1])
    }

    return answer;
}