문제 : https://programmers.co.kr/learn/courses/30/lessons/42748

코드1.

function solution(array, commands){
  let res = [];
  for(let i = 0; i < commands.length; i++){
    let startIdx = commands[i][0] - 1;
    let tmp = array.slice(startIdx, commands[i][1]).sort((a, b) => a - b);
    let resIdx = commands[i][2] - 1;
    res.push(tmp[resIdx]);
  }
  return res;
}

slice와 sort만 알면 크게 어려운 건 아닌거같다. splice와 slice의 차이점만 조심하면 될 듯!

다른사람의 코드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]
    })
}

상위권에 있는 답안인데 다른것보다 배열 구조분해를 하고, filter를 돌려 배열을 채우는게 새로웠당. filter의 인덱스를 활용해 slice처럼 활용하기! (근데 쓸 수 있으면 slice쓰는게 좋다 다른 사람과의 소통이 더 편하니까)

Leave a comment

이메일 주소는 공개되지 않습니다. 필수 항목은 *(으)로 표시합니다