Algorithm

[프로그래머스] 프린터 - Javascript

개발하길잘햇다 2021. 7. 12. 23:39
반응형

 

코드

function solution(priorities, location) {
    let answer = 0;
    let compareArr = [];
    let finArr = [];
    let print;
    
    // 처음 지정한 출력물이 나중에 몇번째로 이동해있는지 찾기위해 인덱스와 함께 있는 형태로 2차 배열을 만들어줌
    priorities.forEach( (elem, idx) => {
        let temp = [idx, elem];
        compareArr.push(temp)
    })
    
    // 비교할 배열의 첫번째 값을 가지고 그 뒷 값들중 큰게 있냐 없냐로 비교배열에서 뺴서 finArr에 담을지 아니면 가장 뒤로 옮길지 결정함
    while(compareArr[0]){
        print = compareArr.shift();
        if(compareArr.some( e => e[1] > print[1] )){
            compareArr.push(print)
        }else{
            finArr.push(print);
        }
    }
    
    // 인덱스로 시작했기때문에 +1 해준다
    answer = finArr.findIndex(e => e[0] == location) + 1;
    return answer;
}

 

느낀 점

Array.push()와 Array.shift()를 적절히 사용하면서 풀었고 some() 함수 활용이 매우 유용했던 문제였다.

반응형