[프로그래머스] 프린터 - JavaScript

Chloé·2022년 3월 13일
0
post-thumbnail

프린터 #스택/큐

출처 - 프로그래머스 코딩테스트 고득점 KIT

💡 문제 접근하기

  1. priorities 배열을 [처음 주어진 문서의 인덱스, 중요도] 배열로 변환한다.
    • 큐에서 문서를 꺼내 다시 맨 끝에 집어넣기 때문에 문서의 인덱스가 계속 변화되는데,
    • 구해야 할 location은 맨 처음 주어진 순서의 인덱스를 기준으로 하므로 인덱스를 함께 저장해주도록 한다.
  2. 큐에 문서가 남아있는 동안 반복하여: 맨 앞에 있는 문서를 꺼내어 남아있는 문서들 중 중요도가 더 높은 문서가 있는지 검증해본다.
  3. 만약 중요도가 더 높은 문서가 남아있다면, 주어진 문서를 큐의 맨 끝에 집어넣는다.
  4. 만약 중요도가 더 높은 문서가 남아있지 않다면, 문서를 인쇄한다.
    • answer를 1 증가시키며 answer에 인쇄된 문서들의 갯수를 누적한다.
    • 인쇄되는 문서의 인덱스가 문제에서 주어진 location과 일치한다면 반복을 종료한다.

🔥 문제 풀어보기

function solution(priorities, location) {
  let answer = 0;
    
  const queue = priorities.map((val, idx) => [idx, val]);
    
  while (queue.length > 0) {
	const J = queue.shift();
	if (queue.filter((doc) => doc[1] > J[1]).length > 0) {
	  queue.push(J)
	} else {
	  answer++;
	  if (J[0] === location) break;
    }
  }
  
  return answer;
}
profile
클로이 데일리 로그

0개의 댓글