[프로그래머스] 프린터

최대 1 분 소요

문제

문제 링크 : https://programmers.co.kr/learn/courses/30/lessons/42587





코드

function solution(priorities, location) {
    
    let doc = location;
    let cnt = 0;
    
    while(priorities.length > 0){
     
        let j = priorities.shift();
        
        //뒤에 중요도 높은 문서가 있을경우
        if(priorities.some(v => v > j)){
            //맨뒤에 삽입
            priorities.push(j);
        //없을경우
        }else{
            cnt++;
            if(doc === 0){
                return cnt;
            }
        }
        doc--;
        
        if(doc === -1){
            doc = priorities.length -1;
        }
        
    }
    return cnt;
}


느낀점

문제자체는 이해하기 쉬웠는데 푸는데 헷갈리는 부분이 많았다.

문제의 흐름은 인쇄를 하면서

priorities.shift() //현재 출력하는 문서 j

j 보다 중요도 높은 문서가 배열안에 있으면 j를 배열의 맨 뒤에 push() 한다. 이때 내가 인쇄를 요청한 문서의 위치 location 을 저장해놓은 변수 doc 의 값도 계속 바꿔줘야함. 인쇄를 한 번 할때마다 인쇄한 횟수인 cnt 를 증가시켜주고 doc의 크기는 1씩 감소시킨다.

  • doc-1 이 되면 배열의 길이 - 1 로 초기화 시켜줌