[JS] 프로세스

기성·2024년 10월 21일
0

TIL

목록 보기
73/81

문제

답안

function solution(priorities, location) {
    var answer = 0;
    let queue = [];
    for(let i=0; i<priorities.length; i++){
        queue.push([priorities[i],i])
    }
    
    priorities.sort((a,b)=>b-a)

    while(true){
        const currentValue = queue[0]
        if(currentValue[0] < priorities[answer]){
            queue.push((queue.shift()))
        }else{
            const value = queue.shift()
            answer ++
            if(location === value[1]){
                return answer
            }
        }
    }
    return answer;
}

우선 큐를 우선순위에 따라 정렬하고 인덱스를 같이 넣는다. 그리고 queue에서 제일 앞을 뽑아서 현재 프로세스가 우선순위보다 작다면 큐의 제일 끝에 다시 삽입하고 아니라면 뽑고나서 우선순위의 인덱스를 증가시킨다. 만일 location과 큐의 인덱스값과 같다면 answer를 return 하기

profile
프론트가 하고싶어요

0개의 댓글