[프로그래머스] 프린터
2023. 3. 2. 22:19ㆍAlgorithm
ㅊ맨 앞에 있는 파일이 가장 높은 중요도여야 출력할 수 있음
가장 높지 않다면, 맨 뒤로 이동
=> 프린터 순서를 하나의 통로로 생각하면 편하다.
한 칸씩 앞으로 이동하고, 더 이상 이동할 곳이 없다면 가장 뒤로 이동!
배열 형태로 저장된 파일들을 앞에서 빼고, 뒤에 이어 붙이는 것은 이 두 함수를 사용하면 된다
- 앞에서 빼기: 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 |