본문 바로가기
배움 기록/코테 연습

[프로그래머스] 프로세스 : JavaScript

by dygreen 2025. 4. 6.
반응형

📌 문제

 

📌 풀이

function solution(priorities, location) {
  let queue = priorities.map((priority, index) => ({ priority, index }));
  let executionCount = 0;

  while (queue.length) {
    let process = queue.shift();
    if (queue.some(item => item.priority > process.priority)) {
      queue.push(process);
    } else {
      executionCount++;
      if (process.index === location) {
        return executionCount;
      }
    }
  }
}

 

풀이 과정은 다음과 같다.

 

1. priorities 의 우선순위와 인덱스를 가진 객체로 구성한 queue 를 만든다

2. queue 에서 첫 번째 요소부터 꺼낸다.

    해당 요소보다 우선순위가 큰 요소가 있다면 → 다시 queue 에 집어 넣는다

    없다면 → 실행 순서를 증가 시키고, 만약 해당 요소의 인덱스 값이 location 과 같다면 해당 실행 순서를 반환한다

3. queue 의 요소가 없을 때까지 반복한다

 

 

  • shift() : 배열에서 첫 번째 요소를 제거하고, 제거된 요소를 반환한다
  • push() : 배열의 끝에 명시된 요소를 추가하고, 배열의 새로운 길이를 반환한다

 

 

728x90

댓글