프린터
문제
프린터
풀이
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;
}
- 일단 프린터 대기열을 돌면서 맨 처음 인덱스를 기억해줌 (객체로 변환)
- 대기열에 문서가 남지 않을때 까지 반복 (while)
- 맨 앞의 문서를 뽑아낸다
- 그리고선 남은 대기열에 있는 문서 중에 맨 앞의 문서보다 우선순위가 높은 문서가 있으면 꺼낸문서를 대기열 마지막에 다시 집어넣는다.
- 뽑아낸 문서가 제일 중요도가 높은거면 작업된 배열에 넣는다.
- 그리고 해당 작업이 완료되면 배열에 들어가있는 요소의 원래 인덱스를 순회하여 내가 처음에 요청했던 그 문서가 몇번째로 인쇄되는 지 리턴한다.