[프로그래머스] 프린터
문제
문제 링크 : https://programmers.co.kr/learn/courses/30/lessons/42587
코드
function solution(priorities, location) {
let doc = location;
let cnt = 0;
while(priorities.length > 0){
let j = priorities.shift();
//뒤에 중요도 높은 문서가 있을경우
if(priorities.some(v => v > j)){
//맨뒤에 삽입
priorities.push(j);
//없을경우
}else{
cnt++;
if(doc === 0){
return cnt;
}
}
doc--;
if(doc === -1){
doc = priorities.length -1;
}
}
return cnt;
}
느낀점
문제자체는 이해하기 쉬웠는데 푸는데 헷갈리는 부분이 많았다.
문제의 흐름은 인쇄를 하면서
priorities.shift() //현재 출력하는 문서 j
j
보다 중요도 높은 문서가 배열안에 있으면 j
를 배열의 맨 뒤에 push()
한다. 이때 내가 인쇄를 요청한 문서의 위치 location
을 저장해놓은 변수 doc
의 값도 계속 바꿔줘야함.
인쇄를 한 번 할때마다 인쇄한 횟수인 cnt
를 증가시켜주고 doc
의 크기는 1씩 감소시킨다.
doc
가 -1 이 되면배열의 길이 - 1
로 초기화 시켜줌