문제설명
멀리뛰기는 실행 우선도가 담긴 배열과 찾고자 하는 인덱스 정보를 받아 실행되는 인덱스의 순서를 반환하는 문제로 조건은 아래와 같다.
1. 실행 대기 큐(Queue)에서 대기중인 프로세스 하나를 꺼낸다. 2. 큐에 대기중인 프로세스 중 우선순위가 더 높은 프로세스가 있다면 방금 꺼낸 프로세스를 다시 큐에 넣는다. 3. 만약 그런 프로세스가 없다면 방금 꺼낸 프로세스를 실행한다. 3.1. 한 번 실행한 프로세스는 다시 큐에 넣지 않고 그대로 종료된다.
문제해결
[1, 1, 9, 1, 1, 1] => [{1,0},{1,1},{9,2},{1,3},{1,4},{1,5}]
queue = process.shift()
process.some({요소,인덱스} => 전체 배열의 요소 > queue의 요소)
function solution(priorities, location) {
let answer = 0;
const process = priorities.map((e, i) => ({ e, i })); // [{1,0},{1,1},{9,2},{1,3},{1,4},{1,5}]
while (process.length) {
const queue = process.shift();
if (process.some((e) => e.e > queue.e)) {
process.push(queue);
} else {
answer++;
if (queue.i === location) break;
}
}
return answer;
}
![[Algorithm] 멀리뛰기](https://www.notion.so/images/page-cover/gradients_8.png)