프로그래머스 - 프린터

아놀드·2021년 8월 4일
0

프로그래머스

목록 보기
9/52

1. 문제

문제 링크

2. 풀이

역시 그냥 문제에서 요구하는대로 구현하면 풀리는 문제입니다.
별로 설명할 게 없군요. 바로 코드로 넘어갑시다.

3. 전체 코드

function solution(priorities, location) {
    // 기본적으로 답은 1
    let ans = 1;
    
    // 1. 로직을 구현하기 쉽게 [[중요도, 인덱스], [중요도, 인덱스]] 형태로 가공합니다.
    priorities = priorities.map((prioritie, index) => [prioritie, index]);

    while (priorities.length) {
        // 2. 인쇄 대기목록의 가장 앞에 있는 문서(J)를 대기목록에서 꺼냅니다.
        let head_task = priorities.shift();

        if (priorities.every(prioritie => head_task[0] >= prioritie[0])) {
            // 4. 문서(J)를 인쇄했는데 내가 요청한 문서였던 경우 탈출합니다.
            if (head_task[1] == location) break;
            // 인쇄 카운트 증가
            ans++;
        }
        // 3. 나머지 인쇄 대기목록에서 J보다 중요도가 높은 문서가 한 개라도 존재하면 J를 대기목록의 가장 마지막에 넣습니다.
        else {
            priorities.push(head_task);
        }
    }

    return ans;
}
profile
함수형 프로그래밍, 자바스크립트에 관심이 많습니다.

0개의 댓글