본문 바로가기
Algorithm/프로그래머스

Level2. 프로그래머스 프린터 - JavaScript

by 강깅꽁 2020. 10. 27.
반응형

 

접근

priorities에는 중요도가 표시되어 있고 location에 번호는 priorities 배열에서 몇 번째 인쇄물인지 가리킵니다. 

[2, 1, 3, 2]에서 location 2는 priorities[2]( 중요도 3 )와 같습니다. 

하지만 중요도에 따라서 인쇄물을 출력하다 보면 priorities에서 내가 추적하고 있는 인쇄물이 어딨는지 특정 짓기가 어렵습니다.

따라서 각각에 uniqe한 값과 priority값을 tuple로 묶어서 인쇄물을 관리하면 저희가 출력되기를 바라는 인쇄물을 특정 짓기 쉬워집니다. 

 

 

function solution(priorities, location) {
    var answer = 0;
    let tupleArr = priorities.map((priority, idx) => [priority, idx]);
    while( tupleArr.length !== 0 ){
        let firstTuple = tupleArr.shift();
        if( tupleArr.every( tuple => firstTuple[0] >= tuple[0]  ) ) {
            answer++;
            if( firstTuple[1] === location) break;
        }
        else tupleArr.push(firstTuple);
    }
    return answer;
}