priorities : 중요도가 순서대로 담긴 배열
location : 몇 번째로 실행되는지 알고싶은 프로세스의 위치
- 1 <= priorities의 길이 <= 100
- 1 <= priorities의 원소(정수) <= 9
- priorities의 원소 = 우선순위를 나타내며 숫자가 클 수록 우선순위가 높습니다.
- 0 <= location <= (대기 큐에 있는 프로세스 수 - 1)
- priorities의 가장 앞에 있으면 0, 두 번째에 있으면 1 … 과 같이 표현
해당 프로세스가 몇 번째로 실행되는가
class Queue {
constructor(){
this.queue = [];
this.front = 0;
this.rear = 0;
this.cnt = 0;
}
enqueue(value, chk){
this.queue[this.rear++] = value;
if(chk) this.cnt -= 1;
}
dequeue(){
const value = this.queue[this.front];
delete this.queue[this.front];
this.front += 1;
this.cnt += 1;
return value;
}
}
function solution(arr, num){
let queue = new Queue()
arr.forEach((e,i) => queue.enqueue([e, i], false));
let sArr = [...arr].sort((a,b) => a - b);
while(true){
let [value, index] = queue.dequeue();
let maxValue = sArr[sArr.length-1];
if(index === num && value == maxValue) break;
maxValue === value ? sArr.pop() : queue.enqueue([value, index], true);
}
return queue.cnt;
}
