[programmers] 프린터

KwonSC·2022년 5월 9일
0

programmers - Python

목록 보기
6/23
post-thumbnail

https://programmers.co.kr/learn/courses/30/lessons/42587


Code

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

Solution

deque를 통해 스택, 힙 모두 O(1)시간 복잡도로 사용 가능하다. deque로 인덱스번호, priority를 튜플로 넣고 while문을 돌려 deque의 원소를 뽑아 뒤에 남은 원소들과 비교하며 큰게있으면 다시 뒤로 넣고 없으면 answer(순서)를 늘린다. 만약 인덱스가 location과 같다면 answer를 리턴

0개의 댓글