2단계 : 프린터

차차·2023년 1월 28일
post-thumbnail

코딩테스트 연습 - 프린터

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--
    }
}
  1. priorities배열의 길이가 0이 될 때까지 반복한다.
  2. firstItem이라는 변수에 priorities 배열의 첫 번째 요소를 할당함과 동시에 priorities 배열의 첫 요소를 삭제한다. ( shift )
  3. priorities 배열에서 firstItem 보다 하나라도 높은 값을 가진 요소가 있다면 true를 존재하지 않는다면 false를 isExist에 할당한다.
  4. 만약 isExisttrue라면 firstItempriorities 배열의 가장 마지막 요소로 추가하고 location 값이 0이라면 location 값을 prioirities 의 길이로 한다.
    (priorities.length - 1이 아닌 이유는 마지막에 location 값을 하나씩 빼주기 때문이다.)
  5. 만약 isExist가 false라면 count를 1씩 추가시키고 location 값이 0이라면 바로 count 값을 리턴한다.
  6. isExist가 true이던 false이던 location 값을 1씩 빼준다.
profile
나는야 프린이

0개의 댓글