백준 1966 python [프린터 큐]

인지용·2025년 2월 16일
0

알고리즘

목록 보기
42/46
post-thumbnail

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

import sys
import json
from collections import deque

# with open("./data.txt", "r") as file:
#     def input():
#         return file.readline().strip()
    
def input():
    return sys.stdin.readline().strip()

K = int(input())
cnt = 0

for i in range(K):
    N, M = map(int, input().split())
    arr = list(map(int, input().split()))
    Q = deque()
    
    # json 형식으로
    for q in range(N):
        data = {
            "value": arr[q],
            "isYn": M == q
        }
        
        Q.append(data)

    # 정렬이 끝나고 원하는 값을 찾을 때까지 방복
    while True:
        data = Q.popleft()
        value = data['value']
        isYn = data['isYn']
        
        # 뒤에 현재 값보다 큰게 존재한다면
        result = any(Q[b]["value"] > value for b in range(len(Q)))

        if(result):
            Q.append(data)
        else:
            cnt += 1

            if(isYn == True):
                break

    print(cnt)
    cnt = 0

찾고자 하는 값이 이동될 때 해당 값이 어디에 있는지 구분할 플래그가 필요하여
json 형식으로 만들어서 큐에 넣어줬다.

프린트를 출력하려고 할 때 큐에 현재 값보다
큰게 존재한다면 맨 뒤로 보내주었다.

카운트는 프린트를 출력하는 시점에 해야하기 때문에 뒤로 보내줄 땐 카운트 x

그리고 이를 원하는 값을 찾을 때까지 반복!
profile
한-줄

0개의 댓글