문제 풀이 !
중요도가 순서대로 담긴 배열로 큐를 생성하고, 배열에서의 각 프로세스의 위치 큐를 생성합니다. if문을 사용해 방금 꺼낸 프로세스의 우선순위보다 더 높은 프로세스가 있다면(if queue[0]<max(queue):
)
다시 큐의 뒤에 append해주고(queue.append(queue.popleft()) answer.append(answer.popleft())
)
방금 꺼낸 프로세스가 우선순위가 가장 높다면(else:
) popleft로 꺼내주고 프로세스의 위치를 나타낸 큐에서도 popleft를 해주면서(queue.popleft()
) 몇번째 실행인지 횟수를 세어줍니다(a+=1
). 그리고 방금 꺼낸 프로세스의 위치가 location과 같을 때 몇번째 실행인지를 리턴해줍니다. (if answer.popleft()==location: return a
)
from collections import deque
def solution(priorities, location):
a=0
answer = deque(list(range(len(priorities))))
queue=deque(priorities)
while queue:
if queue[0] < max(queue):
queue.append(queue.popleft())
answer.append(answer.popleft())
else:
queue.popleft()
a+=1
if answer.popleft()==location:
return a