본문 바로가기

Dev/Algorithm

알고리즘 문제 | 프로그래머스 - K번째 수

반응형

문제

 

풀이

 

우선 i번째 숫자부터 j번째 숫자까지 자르고 정렬 => slice, sort로 해결

 

commands가 2차원 배열이니까

이중 반복문 쓰면 될 듯.. ?

// 이중반복문으로 요소 하나하나 뽑기!
let commands = [[2, 5, 3], [4, 4, 1], [1, 7, 3]]

for(let i=0; i<commands.length; i++) {
  for(let j=0; j<commands.length; j++) {
    console.log(commands[i][j]);
  }
}

응 이중 반복문 아니야 필요 없어

 

왜냐하면 commands의 원소의 길이가 3으로 고정이기 때문에

[i][0], [i][1], [i][2]로 뽑아 올 수 있기 때문이지

 

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

앞에서 말한 것처럼 slice로 i, j 번째 까지 자르고

sort로 정렬한 후

인덱스 값으로 값 받아오고

push로 배열 만들기!

 

 


 

 

다른 사람 풀이

 

map을 써서 commands 배열을 각 변수에 담아버렸다

그 후 filter로 원하는 값만 새로운 배열에 담아서 정렬..

 

오.. 이것도 좋다ㅏㅏㅏㅏ

반응형