코테 대비 python/백준

1966 프린터 큐

ylab 2023. 4. 10. 22:59

https://www.acmicpc.net/problem/1966

 

1966번: 프린터 큐

여러분도 알다시피 여러분의 프린터 기기는 여러분이 인쇄하고자 하는 문서를 인쇄 명령을 받은 ‘순서대로’, 즉 먼저 요청된 것을 먼저 인쇄한다. 여러 개의 문서가 쌓인다면 Queue 자료구조에

www.acmicpc.net

from collections import deque
T=int(input())
for _ in range(T):
    n,m = map(int,input().split())
    w = list(map(int,input().split()))
    que=[0]*n
    index=[0]*n
    cnt=0
    #순서와 가중치 저장
    for i in range(len(w)):
        que[i] = w[i]
        index[i] = i
    #popleft쓰려고 덱으로 변환
    q = deque(que)
    idx = deque(index)
    # 만약 왼쪽값이 크다면 그냥 출력
    while q:
        if q[0] >= max(q):
            q.popleft()
            a=idx.popleft()
            cnt+=1
            if a==m:
                print(cnt)
        # 만약 왼쪽게 작다면 뽑고 뒤로 어팬드
        elif q[0] < max(q):
            b=q.popleft()
            q.append(b)
            c=idx.popleft()
            idx.append(c)