[Python] 스택/큐(2) 프린터
Updated: Categories: Programmershttps://programmers.co.kr/learn/courses/30/lessons/42587
아이디어
- 프린터의 우선순위만 담은 리스트만 주어지므로 리스트의 순서가 바뀌면 인덱스의 정보가 사라집니다
- 따라서 인덱스와 우선순위를 그룹핑한 큐 p_list를 생성합니다.
- 그리고 priorities를 참조할 우선순위 큐로 바꿉니다.
- 이제 p_list 큐의 맨 앞 값(temp)을 계속 검사합니다.
- temp의 우선순위를 priorities 큐의 맨 앞 값과 비교합니다.
- priorities 큐의 맨 앞 값과 우선순위가 같다면 temp의 우선순위가 가장 큽니다.
- 만약 다르다면 가장 큰게 아니므로 temp를 큐의 뒤로 보냅니다
- 같다면 temp의 인덱스가 location일 때 cnt를 리턴합니다.
정답 코드
from collections import deque
def solution(priorities, location):
p_list = deque([[i,p] for i, p in enumerate(priorities)])
priorities = deque(sorted(priorities, reverse=True))
cnt = 0
while 1:
temp = p_list.popleft()
if priorities[0] != temp[1]:
p_list.append(temp)
else:
cnt+=1
priorities.popleft()
if temp[0] == location:
break
return cnt