공부/코딩테스트

[프로그래머스] 프린터(스택/큐)

ghhong 2021. 1. 15. 10:59

나의 답 :

def solution(p, l):
    answer = 0
    while True:
        m = max(p)
        n = p[l]
        f = p.pop(0)
        l -= 1
        if f==m:
            answer+=1
            if l==-1:
                return answer
        else:
            p.append(f)
            if l==-1:
                l=len(p)-1

다른 사람의 답 :

def solution(priorities, location):
    queue =  [(i,p) for i,p in enumerate(priorities)]
    answer = 0
    while True:
        cur = queue.pop(0)
        if any(cur[1] < q[1] for q in queue):
            queue.append(cur)
        else:
            answer += 1
            if cur[0] == location:
                return answer

pop을 사용하는 것보다 collection의 deque를 사용하는 것이 더 효율적이라고 한다.

출처 : https://stackoverflow.com/questions/21639888/is-it-possible-to-convert-list-to-queue-in-python