[프로그래머스] 프로세스

hagnoykmik·2023년 11월 12일
0

코딩테스트 연습

목록 보기
25/36
post-thumbnail

[프로그래머스] 프로세스 바로가기

아이디어

  • 자신보다 높은 우선순위가 있는지 확인하기 위해 우선순위가 높은 순서대로 정렬한 리스트를 이용했다 💡

시간 복잡도

  • O(N)

코드

from collections import deque
def solution(priorities, location):
    priorities_sort = sorted(priorities, reverse=-1) # 우선순위 높은 것부터 정렬
    priorities_q = deque((i, p) for i, p in enumerate(priorities))
    run = [] # 실행시킨 순서
    
    while priorities_q:
        idx, priority = priorities_q.popleft()
        
        # 자신보다 우선순위가 높은 프로세스가 있을 때 다시 큐에 넣기
        if priority != priorities_sort[0]:
            priorities_q.append((idx, priority))
            
        # 자기가 제일 우선순위 높을 때
        else:
        	# 큐에서 빼서 찾고있는 인덱스인지 확인
            run.append(priorities_sort.pop(0))
            if idx == location:
                return len(run)
profile
성장하는 개발자, 김경아입니다.

0개의 댓글