[Python][백준] 1966번 프린터 큐

신남·2023년 1월 18일

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

공부 날짜 : 2023.01.18
정답 참조 여부 : X

프린터에서 중요도 순서에 따라서 문서가 출력될 때 특정 문서의 출력 순서를 구하는 문제이다.


중요도가 중복이 없다면 정렬문제가 되지 않을까 싶지만 중복이 존재한다면 구현으로 직접 하나씩 출력해보는게 편할거 같았다.

결과에서 원하는 문서가 나왓는지 체크하기 위해 중요도만 입력된 문서에서 중요도와 index(문서)를 함께 저장해서 각 문서를 가져왔을 때 문서와 중요도를 함께 가져오게 했다.

맨 앞의 값을 맨뒤로 보내는건

data.append(data.pop(0))

의 명령어로 진행했고

출력된 문서가 알고자 하는 문서면 반복을 멈추고 답을 출력했다.

import sys
input = sys.stdin.readline


##############################################
# 리스트에서 1번 인덱스 값만 반환하는 함수(map 용)
def T_F(list_):
    return list_[1]


##############################################
t = int(input())

# 테스트 개수만큼 반복
for _ in range(t):
    n, m = map(int, input().split())

    data = list(map(int, input().split()))

    for i in range(n):
        data[i] = [i, data[i]]

    answer = 0
    while data:
        index, imp = data[0]

        if imp < max(map(T_F, data)):
            data.append(data.pop(0))
        else:
            data.pop(0)
            answer += 1
            if index == m:
                break

    print(answer)

0개의 댓글