https://programmers.co.kr/learn/courses/30/lessons/42587
from collections import deque
def solution(priorities, location):
q = deque([(i, p) for i, p in enumerate(priorities)])
answer = 0
while (q):
idx, priority = q.popleft()
flag = True
for i, prior in q:
if (prior > priority):
q.append((idx, priority))
flag = False
break
if (flag):
answer += 1
if (idx == location):
break
return answer
deque
를 통해 스택, 힙 모두 O(1)
시간 복잡도로 사용 가능하다. deque
로 인덱스번호, priority를 튜플로 넣고 while문을 돌려 deque
의 원소를 뽑아 뒤에 남은 원소들과 비교하며 큰게있으면 다시 뒤로 넣고 없으면 answer(순서)
를 늘린다. 만약 인덱스가 location
과 같다면 answer
를 리턴