본문 바로가기

코테연습문제

[백준/Python] 1966 프린터 큐

A = int(input()) #A는 테스트케이스 갯수를 받는 변수
for _ in range(A):
    N, M = list(map(int, input().split()))
    importance = list(map(int, input().split())) #중요도
    numLst = list(range(len(importance))) #각 문서를 0부터 번호를 매김
    numLst[M] = '!' #순서를 알고 싶은 문서를 '!'로 지정
    order = 0
    
    while True:
        if importance[0] == max(importance):
            order += 1
            if numLst[0] == '!':
                print(order)
                break
            else:
                importance.pop(0)
                numLst.pop(0)
        else:
            importance.append(importance.pop(0))
            numLst.append(numLst.pop(0))

while문을 설명하자면,

1. 첫 번째 문서의 중요도가 전체 문서 중 가장 큰지 비교

2. 중요도가 가장 크다면, order를 1 증가시킨다

3-1. 이때 첫 번째 문서가 순서를 알고 싶은 문서였다면('!'), order를 출력 후 break

3-2. 첫 번째 문서가 순서를 알고 싶은 문서가 아니었다면, pop을 통해 제거

4. 첫번째 문서의 중요도가 전체 문서 중 가장 큰 값이 아니라면, pop을 해서 다시 importance&numLst 뒤에 append