[algorithm / programmers] 프린터

stella·2020년 6월 11일

algorithm

목록 보기
3/7

프린터

문제

프린터

풀이

function solution(priorities, location) {
    let answer = [];
    let p = priorities.map((e,i) => ({idx : i, num : e}))
    while(p.length){
        const j = p.shift();
        if(p.find(e => e.num > j.num)){
            p.push(j)
        }else{
            answer.push(j)
        }
    }
    
    
    return answer.findIndex(e => e.idx === location) + 1;
}
  1. 일단 프린터 대기열을 돌면서 맨 처음 인덱스를 기억해줌 (객체로 변환)
  2. 대기열에 문서가 남지 않을때 까지 반복 (while)
  3. 맨 앞의 문서를 뽑아낸다
  4. 그리고선 남은 대기열에 있는 문서 중에 맨 앞의 문서보다 우선순위가 높은 문서가 있으면 꺼낸문서를 대기열 마지막에 다시 집어넣는다.
  5. 뽑아낸 문서가 제일 중요도가 높은거면 작업된 배열에 넣는다.
  6. 그리고 해당 작업이 완료되면 배열에 들어가있는 요소의 원래 인덱스를 순회하여 내가 처음에 요청했던 그 문서가 몇번째로 인쇄되는 지 리턴한다.
profile
겔름뱅이

0개의 댓글