본문 바로가기
프로그래밍/알고리즘 & 자료구조

백준 1966 : 프린터 큐 with 파이썬

by Play_With 2024. 1. 22.
반응형

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

 

1966번: 프린터 큐

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

www.acmicpc.net

 

# 포인트

1. enumerate로 (값과 인덱스)를 묶어주기

2. 최대값인지 확인 : max(iterable, key=lambda x:)

값이 최대값이면 cnt+1 하고 바로 출력하고, q.popleft()

최대값이 아니면 뒤에 다시 넣기 q.append(q.popleft())

3. cnt로 출력순서 갱신

 

import sys
from collections import deque
input=sys.stdin.readline
case=int(input())
for _ in range(case):
    n,m=map(int, input().split())
    nums=list(map(int, input().split()))
    q=deque([(i, idx) for idx, i in enumerate(nums)])

    cnt=0
    while True:
        if q[0][0] == max(q, key=lambda x : x[0])[0]:   #q[0][0]는 값
            cnt+=1
            if q[0][1]==m:                              #q[0][1]는 인덱스
                print(cnt)
                break
            else :
                q.popleft()
        else :
            q.append(q.popleft())
반응형

댓글