1. 문제
제한사항
입출력 예
입출력 예 설명
2. 정답 풀이
풀이 전략
- 큐 활용.
- 정답을 위한 인덱스 배열 idx 선언
- 우선순위가 가장 높은 프로세스인 경우 큐와 인덱스 배열에서 삭제한다.
- 우선순위가 더 높은 프로세스가 큐에 있는 경우 큐와 인덱스 배열에서 삭제 후 마지막에 추가한다.
- 우선순위가 가장 높은 프로세스면서 index가 location인 경우 순회를 종료하고 정답 리턴
function solution(priorities, location) {
let answer = 0;
// 실행 대기 큐의 인덱스 배열
let idx = Array.from({length: priorities.length}, (_,idx) => idx);
while(priorities.length > 0){
const max_value = Math.max(...priorities);
// 우선 순위가 더 높은 프로세스가 있는 경우
if (priorities[0] < max_value) {
// 프로세스의 0번 인덱스(꺼낸 프로세스)를 큐에 마지막에 넣는다.
priorities = [...priorities.slice(1), priorities[0]];
// 인덱스 배열도 동일하게 처리
idx = [...idx.slice(1), idx[0]];
} else {
// 우선 순위가 가장 높은 프로세스인 경우
answer+=1; // 실행 순서 +1
// location에 해당하는 프로세스인 경우 순회 종료
if (idx[0] === location) break;
// 실행 대기 큐, 인덱스 배열에서 우선 순위가 가장 높은 프로세스를 제거
priorities = priorities.slice(1);
idx = idx.slice(1);
}
}
return answer;
}
시간이 좀 걸리긴 했지만 인덱스를 처리하는 배열을 따로 선언해서 문제를 간단하게 풀 수 있었던 것 같다..😅
'코딩 테스트 > 프로그래머스(LV2)' 카테고리의 다른 글
[프로그래머스] 뉴스 클러스터링(2018 Kakao Blind Recruitment) (LV2 - JavaScript) (3) | 2024.11.18 |
---|---|
[프로그래머스] 전화번호 목록 (LV2 - JavaScript) (3) | 2024.11.16 |
[프로그래머스] 튜플 (LV2 - JavaScript) (5) | 2024.11.15 |
[프로그래머스] 피로도 (LV2 - JavaScript) (3) | 2024.11.14 |
[프로그래머스] 의상 (LV2 - Javascript) (5) | 2024.11.13 |