[프로그래머스] 프로세스 (JS)

hhkim·2023년 8월 27일
0

Algorithm - JavaScript

목록 보기
115/188
post-thumbnail

풀이 과정

  1. 우선 순위 배열의 각 요소가 인덱스를 가지는 2차원 배열이 되도록 변환: map()
  2. 빈 큐 배열 생성
  3. 1번 배열에서 요소를 모두 제거할 때까지 반복
  4. 첫 번째 요소 제거: shift()
  5. 남은 요소 중에서 우선 순위가 더 높은 요소가 있는지 찾기: some()
  6. 있으면 배열 끝에 다시 붙이기: push()
    없으면 큐 배열에 넣기: push()
  7. 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;
}

0개의 댓글