[프로그래머스] 프린터

2023. 3. 2. 22:19Algorithm

ㅊ맨 앞에 있는 파일이 가장 높은 중요도여야 출력할 수 있음

가장 높지 않다면, 맨 뒤로 이동

=> 프린터 순서를 하나의 통로로 생각하면 편하다.

한 칸씩 앞으로 이동하고, 더 이상 이동할 곳이 없다면 가장 뒤로 이동!

 

배열 형태로 저장된 파일들을 앞에서 빼고, 뒤에 이어 붙이는 것은 이 두 함수를 사용하면 된다

  • 앞에서 빼기: shift()
  • 뒤에 이어붙이기: push(붙일 파일)

 

1. 원하는 값이 인쇄될 때까지 반복

2. 현재 가장 큰 중요도 max값 찾기

3. 가장 앞의 값 빼기

4. max와 가장 앞의 값이 같으면 

 4-1. 인쇄횟수 num +=1

 4-2. 방금 인쇄된 것이 원했던 인쇄물이면 끝

5. max와 가장 앞의 값이 다르면

 5-1. 맨 뒤에 다시 붙임

 5-2. 맨 뒤로 이동한 것이 원했던 인쇄물이면 location을 리스트 전체 길이 값으로 변경해줌

         * 6번을 실행할 것이기 때문에 원래 index값보다 +1 한 값으로 변경하는 것

6. location 값 -1 줄이기

function solution(priorities, location) {
    let clear = false
    let num =0
    while(!clear){
        let max=Math.max(...priorities)
        let sh =priorities.shift() //앞에꺼 꺼냄
        if(sh === max){ //제일 크면, 없앰
            num+=1
            if(location === 0){
                clear=true
            }    
        } 
        else{ //제일 안크면, 다시 넣음
            priorities.push(sh)
             if(location === 0){
               location = priorities.length
            } 
        } 
            location -=1
    }
    return num
}

'Algorithm' 카테고리의 다른 글

[프로그래머스] 피로도  (0) 2023.03.03
스택과 큐  (0) 2023.03.02
[프로그래머스] 베스트앨범  (0) 2023.03.02
[프로그래머스] 폰켓몬  (0) 2023.03.02
[프로그래머스] 완주하지 못한 선수  (1) 2023.03.02