구현 위주의 문제
프린터는 일반적으로, 요청된 순서대로 인쇄합니다.
중요한 문서는 먼저 인쇄하기 위해, 각 문서에 중요도가 존재합니다.
대기목록 문서의 중요도가 담긴 배열 priorites
와 요청한 문서의 위치 location
을 가지고,
내가 요청한 문서가 몇 번째로 인쇄되는지 반환합니다.
대기목록에 담긴 중요도와, 내 문서를 찾기 위한 인덱스를 가지는 객체로 배열을 정의합니다.
인쇄 순서에 따라 print
배열에 인덱스를 담고, 내 문서가 담기면 종료하고 배열의 길이를 반환합니다.
function solution(priorities,location) {
const print = [];
const input = Array.from(priorities, (priority,index)=>({priority,index}) );
while(!print.includes(location)) {
const now = input.shift();
const moreImportant = elem => elem.priority > now.priority;
if(input.some(moreImportant)) input.push(now);
else print.push(now.index);
}
return print.length;
}
현재 대기목록 배열, input
에 우선순위와 인덱스를 담았습니다.
배열에 조건에 해당하는 요소가 있는지 확인하기 위한 Array.prototype.some()
함수를 사용합니다.
내 문서가 인쇄되면 반복을 종료하고, 몇 번째로 인쇄되었는지 반환합니다.