70일차 - 프로그래머스 문제풀기

김민찬·2021년 7월 18일
0

취업으로의 여정

목록 보기
71/196

섹션 3으로 들어가기전 당장 다음 주 부터 알고리즘에 대한 공부가 있어서 복습할 겸 프로그래머스 문제를 풀어봤다. 그 중 k번째 수를 정리해 볼까 한다.

문제 : 배열 array의 i 번째 숫자로 부터 j번째 숫자까지 자르고 정렬했을때, k번째에 있는 수를 구하라

예시)
array = [1, 5, 2, 6, 3, 7, 4], commands = [2, 5, 3] 이라면

  1. array의 2번째 부터 5번째 까지 자르면 [5, 2, 6, 3]이다.
  2. 1에서 나온 배열을 정렬하면 [2, 3, 5, 6]이다. (오름차순)
  3. 2에서 나온 배열의 3번째 숫자는 5이다.

입출력 예시

arraycommandsreturn
[1, 5, 2, 6, 3, 7, 4][[2, 5, 3], [4, 4, 1], [1, 7, 3][5, 6, 3]

내 풀이

function solution(array, commands) {
    var answer = [];
    
    // for문으로 commands를 돌면서 각각의 조건들을 우선 쪼갰다
    for (let command of commands) {
      
    // array.slice는 첫 번째 인자 이상 두 번째 인자 미만이고, array의 index는 0부터 시작함으로 첫 번째 인자에만 -1을 붙혀서 조건이랑 일치시켰다.
        let arr = array.slice(command[0]-1, command[1])
    // 조건대로 오름차순으로 정렬했다. array.sort는 mutable임으로 다른 변수를 생성해주지 않고 원본을 직접 바꿨다.
        arr.sort((a, b) => a-b);
        
    // 각각의 조건의 k 번째 수를 answer에다 집어넣어서 문제의 답을 만족 시켰다.
        answer.push(arr[command[2]-1])
    }
    
    return answer;
}
profile
두려움 없이

0개의 댓글