코딩테스트 연습 - 프린터
function solution(priorities, location) {
let cnt = 0;
while(priorities.length > 0){
const firstItem = priorities.shift();
const isExist = priorities.some(item =>firstItem < item);
if(isExist){
priorities.push(firstItem);
if(location == 0) location = priorities.length;
}else{
cnt++;
if(location === 0) return cnt;
}
location--
}
}
priorities배열의 길이가 0이 될 때까지 반복한다.
firstItem이라는 변수에 priorities 배열의 첫 번째 요소를 할당함과 동시에 priorities 배열의 첫 요소를 삭제한다. ( shift )
priorities 배열에서 firstItem 보다 하나라도 높은 값을 가진 요소가 있다면 true를 존재하지 않는다면 false를 isExist에 할당한다.
- 만약
isExist가 true라면 firstItem을 priorities 배열의 가장 마지막 요소로 추가하고 location 값이 0이라면 location 값을 prioirities 의 길이로 한다.
(priorities.length - 1이 아닌 이유는 마지막에 location 값을 하나씩 빼주기 때문이다.)
- 만약
isExist가 false라면 count를 1씩 추가시키고 location 값이 0이라면 바로 count 값을 리턴한다.
isExist가 true이던 false이던 location 값을 1씩 빼준다.