반응형
1. 문제
https://school.programmers.co.kr/learn/courses/30/lessons/42587
2. 코드
function solution(priorities, location) {
// 큐, 선입선출
let done = [];
// 내가 요청한 문서 판별을 위해 [값,인덱스] 쌍을 요소로 갖는 2차원 배열을 만듦
let waitList = priorities.map((el, i) => [el, i]);
// 대기 리스트에 남은 요소가 있을 때까지 반복
while (waitList.length) {
// 대기 리스트 맨 앞 요소
const front = waitList.shift();
// 만약 맨 앞 요소의 값이 대기 리스트의 요소들의 값 중 가장 큰 값보다 크거나 같으면
// 출력 완료(done)배열에 넣어줌
if (front[0] >= Math.max(...waitList.map(el => el[0]))) {
done.push(front[1]);
// 만약 내가 요청한 문서라면 break
if (front[1] === location) break;
} else {
// 맨 앞 요소의 값보다 더 큰 값을 가진 문서가 있다면 대기 리스트의 맨 뒤로 보냄
waitList.push(front);
}
}
return done.indexOf(location) + 1;
}
+ max 값은 유동적이다. 대기 리스트에 있는 요소들 중 가장 큰 값이 max다! 처음부터 max를 고정하는게 아니라!ㅠㅠ 안되면 문제를 다시 읽어보고 생각해보자.
복기
4/14
반응형
'프로그래머스 > 스택, 큐' 카테고리의 다른 글
[스택] 프로그래머스 '짝지어 제거하기' - js (0) | 2023.03.17 |
---|---|
[스택] 프로그래머스 '다리를 지나는 트럭' - js (0) | 2022.11.17 |
[큐] 프로그래머스 '기능개발' - js (0) | 2022.11.16 |
[스택] 프로그래머스 '같은 숫자는 싫어' (0) | 2022.11.16 |
[스택] 프로그래머스 '올바른 괄호' - js (0) | 2022.10.04 |