프린터의 작업순서 priorities와 출력하고 싶은 작업물의 location을 받아 location에 해당하는 작업물이 아래 규칙에 따랐을 때, 몇 번째로 출력되는지 리턴해야 함.
1. 인쇄 대기목록의 가장 앞에 있는 문서(J)를 대기목록에서 꺼냅니다.
2. 나머지 인쇄 대기목록에서 J보다 중요도가 높은 문서가 한 개라도 존재하면 J를 대기목록의 가장 마지막에 넣습니다.
3. 그렇지 않으면 J를 인쇄합니다.
* queue 활용
1) priorities에서 가장 큰 요소가 배열의 맨 앞에 오도록 배치 함
2) 그 상태에서의 location을 기록해 둠
3) 이후 priorities를 queue의 형식으로 앞 요소부터 빼주고(shift()), rank를 +1, location을 -1 해주며 작업을 진행함
4) location < 0 이 되면 rank를 리턴함
function solution(priorities, location) {
let rank = 1;
while(priorities.length){
if(priorities[0] < Math.max(...priorities)){
if(--location < 0){
location = priorities.length - 1;
}
priorities.push(priorities.shift());
} else {
if(--location < 0){
return rank;
}
priorities.shift();
rank++;
}
}
}