문제
접근
큐, 힙 문제이다. 프린터 자체는 큐로 구현하고, 우선순위를 최대 힙으로 구현해놓으면 편하게 풀 수 있다.
힙에서 가장 상단과 현재 큐의 상단을 비교하여 같으면 빼고 다르면 큐에 다시 삽입하는 식이다.
따로 큐나 힙을 쓰진 않았고 list를 이용해 구현했다.
pq가 힙의 역할을 한다.
코드
- 파이썬 코드
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
def solution(priorities, location):
answer = 0
pq = priorities[:]
pq.sort()
while True:
if pq[-1]==priorities[0]:
priorities.pop(0)
pq.pop(-1)
if location == 0:
break
location-=1
answer+=1
else:
priorities.append(priorities[0])
priorities.pop(0)
if location == 0:
location = len(priorities)-1
else:
location -= 1
return answer+1