문제 url -
https://programmers.co.kr/learn/courses/30/lessons/42587?language=javascript
function solution(priorities, location) {
var answer = 0;
//location 인덱스에 해당하는 value에 is_me true 할당
let new_list = priorities.map((value,idx)=>{
let is_me = location === idx ? true : false;
return {value,is_me}
})
let order = 0;
let result = false;
while(true) {
//배열 맨 앞 씩 잘라가면서 그거하고 계속 비교
let shiftedThing = new_list.shift();
//만약 잘라낸 객체의 value가 list value보다 작다면 잘라낸 객체는 다시 맨뒤로보내기
if(new_list.some((element)=>element.value > shiftedThing.value)) {
new_list.push(shiftedThing)
}
//위 조건문에 해당하지 않으면 order 카운트 올림
//잘라낸게 is_me true면 order 카운트 반환
else {
order++
if(shiftedThing.is_me) return order
}
}
}
위 식에 입출력 예의 두번째를 대입하여 계산해보면 이런식이 되겠습니다
11 9 1 1 1
1 9 1 1 11
9 1 1 111
1 1 111 -> order++
1 111 -> order++
111 -> order++
11 -> order++
1 -> order++ , is_me = true 원소이므로 order return