반응형
function solution(priorities, location) {
const answer = [];
const waitList = priorities.map((x, i) => [x, i]);
//i를 통해 location위치를 반환시켜주기 위해 배열로 만들어준다.
while (waitList.length) {
const front = waitList.shift();
//큐처럼 앞에서 빼준다.
if (front[0] >= Math.max(...waitList.map(x => x[0]))) {
//만약 Math.max로 큰 숫자보다 큰게 있다면 answer에 담아준다. front[1]을 넣어주는 이유는
//index는 여기서 고유하게 쓰일 수 있다.
answer.push(front[1]);
if (front[1] === location) {
//만약 location과 i인 front[1]이 같다면 이미 자기보다 큰 숫자가 우선순위에 들어간 상태가 된다.
break;
}
} else {
waitList.push(front);
//이렇게 되면 wiatList의 스택처럼 쌓이게 된다.
}
}
return answer.indexOf(location) + 1;
//해당 위치에서 +1
}
반응형
'알고리즘문제' 카테고리의 다른 글
프로그래머스 > 위장 (0) | 2022.11.06 |
---|---|
프로그래머스 > 튜플 (0) | 2022.11.04 |
프로그래머스 > 기능개발 (0) | 2022.11.01 |
프로그래머스 > H-Index (0) | 2022.10.31 |
프로그래머스 > 행렬의 곱셈 (0) | 2022.10.30 |