반응형
📌 문제
📌 풀이
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
'배움 기록 > 코테 연습' 카테고리의 다른 글
[프로그래머스] 올바른 괄호 : JavaScript (0) | 2025.04.05 |
---|---|
[프로그래머스] 모의고사 : JavaScript (0) | 2025.03.29 |
[프로그래머스] 의상 : JavaScript (0) | 2025.03.23 |
[프로그래머스] 완주하지 못한 선수 : JavaScript (0) | 2025.03.22 |
[프로그래머스] 빈 배열에 추가, 삭제하기 : JavaScript (1) | 2025.02.17 |
댓글