풀이 과정
- 우선 순위 배열의 각 요소가 인덱스를 가지는 2차원 배열이 되도록 변환:
map()
- 빈 큐 배열 생성
- 1번 배열에서 요소를 모두 제거할 때까지 반복
- 첫 번째 요소 제거:
shift()
- 남은 요소 중에서 우선 순위가 더 높은 요소가 있는지 찾기:
some()
- 있으면 배열 끝에 다시 붙이기:
push()
없으면 큐 배열에 넣기: push()
- 2번 배열에서 location이 기존 인덱스였던 요소의 순서 찾기:
findIndex()
코드
function solution(priorities, location) {
let arr = priorities.map((e, i) => [e, i]);
const queue = [];
while (arr.length) {
const curr = arr.shift();
if (arr.some((e) => e[0] > curr[0])) {
arr.push(curr);
} else {
queue.push(curr);
}
}
return queue.findIndex((e) => e[1] === location) + 1;
}