function solution(priorities, location) {
let idx = 0;
let cnt = 0;
priorities = priorities.map((a) => {
return {val : a, idx : idx++};
})
while(true) {
if(priorities.length === 0) break;
const sorted = priorities.slice().sort((a,b) => b.val-a.val)
const shiftedValue = priorities.shift()
if(shiftedValue.val === sorted[0].val) {
cnt++;
if(shiftedValue.idx === location) {
break;
}
}
if(shiftedValue.val !== sorted[0].val) {
priorities.push(shiftedValue)
}
}
return cnt;
}
=> while문 돌 때 마다 계속 sort 해줘야되는 단점이 있음
function solution(priorities, location) {
let answer = 0
let index = location
while(priorities.length > 0) {
if(priorities.some(num => num > priorities[0])) {
priorities.push(priorities[0])
priorities.shift()
if(index === 0) {
index = priorities.length - 1
} else {
index--
}
} else {
priorities.shift()
answer++
if(index === 0) {
break;
} else {
index--
}
}
}
return answer;
}
구글링하다가 완전 좋은 함수를 알아냈다... some으로 모든 요소들 순회하면서 조건에 충족해주는지 판별해주는 함수!
여기다가 처음 location의 위치를 저장해놓은 index라는 변수를 만들어서 배열이 바뀔 때마다 값을 변화시켜주면 답이 나온다