Lv2. 프로세스 (스택/큐)

김태경·2023년 7월 4일
0

코딩테스트

목록 보기
11/12

문제 풀이 !

중요도가 순서대로 담긴 배열로 큐를 생성하고, 배열에서의 각 프로세스의 위치 큐를 생성합니다. 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
profile
신입 ^3^

0개의 댓글