처음에 거의 2시간을 매달려서 우선순위를 max로 찾아 다른 값으로 치환해 풀다가 생각해보니 여러개의 max값이 있을 떄 그 처리를 해주지 않아 한참을 헤맸다.
function solution(priorities, location) {
let ans = 0;
let position = []
let max = Math.max(...priorities);
//1. 인덱스로 이루어진 position map을 만듦
for(let i = 0; i < priorities.length; i++){
position.push(i);
}
//2. 알고리즘 뽑기
while(priorities.length != 0){
// 처음이 우선순위 (가장 큰 값)가 아니라면 옮기면서 처음이 우선순위가 가장 높도록 설정
if(priorities[0] < max){
priorities.push(priorities.shift());
position.push(position.shift());
} else {
// location이 나올 때까지 ans에 1을 더해줌
ans+=1;
priorities.shift();
if(position.shift() == location)
return ans;
// 뽑아줬을 때 다시 max값을 지정하여 while을 돌도록
max = Math.max(...priorities);
}
}
// 다른 사람 풀이 : 힌트
// 각 priorities의 index를 가리키는 position map을 만들어 놓고
// priorities과 같이 움직이게 하면 쉽게 풀 수 있습니다 라고한다.
}