13. 프린터
코딩테스트 연습 > 스택/큐 > 프린터
https://programmers.co.kr/learn/courses/30/lessons/42587
Input value = priorities(list(int)), location(int)
Process
입력한 priorities의 첫번째 인덱스 원소 X 를 꺼낸다.
리스트의 나머지 값들이 X보다 큰 경우가 하나라도 존재하면
그렇지 않을 경우 X 를 결과 리스트에 추가한다.
입력된 location가 결과 리스트의 몇번째에 위치하는지 return 한다.
Output value = return(int)
현재 대기목록에는 1개 이상 100개 이하의 문서가 있습니다.
인쇄 작업의 중요도는 1~9로 표현하며 숫자가 클수록 중요하다는 뜻입니다.
location은 0 이상 (현재 대기목록에 있는 작업 수 - 1) 이하의 값을 가지며 대기목록의 가장 앞에 있으면 0, 두 번째에 있으면 1로 표현합니다.
#01
from collections import deque
result = 0
p_que = deque()
for i,v in enumerate(priorities):
p_que.append((v,i))
02-1. break선언을 하기 전 까지 while 문을 이용
02-2. 문제에서 제시한 프로세스에 맞추어 J 추출 후 남은 값과의 비교
02-3. 비교 결과에 따라 리스트에 추가 or result+=1을 한다.
02-4. result+=1 할 때, location값이 J의 1번째 값(우선순위값)과 같을 경우 해당 반복문을 종료한다.
while True:
J = p_que.popleft()
if p_que and max(p_que)[0] > J[0]:
p_que.append(J)
else:
result += 1
if J[1] == location:
break
result
from collections import deque
def solution(priorities,location):
result = 0
p_que = deque()
for i,v in enumerate(priorities):
p_que.append((v,i))
while True:
J = p_que.popleft()
if p_que and max(p_que)[0] > J[0]:
p_que.append(J)
else:
result += 1
if J[1] == location:
break
return result
# Code test
priorities, location = [2, 1, 3, 2], 2
solution(priorities,location)