알고리즘

큐,덱 #백준 1966

현쥬스주스 2021. 3. 23. 21:15

www.acmicpc.net/problem/1966

 

1966번: 프린터 큐

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

www.acmicpc.net

[ 문제 해결 방법 ]

 

몇 번째 인쇄되었는지 궁금한 문서의 위치를 새로운 배열에 저장하고 해당 위치는 1로 표기해준다.
파이썬의 max 메소드를 이용하여 중요도 리스트의 최댓값을 구하여 중요도 리스트의 첫번째 값과 같다면 출력을 시키고, 여기서 위치 리스트와의 비교를 통해 사용자가 궁금한 값인지 확인을 해주면된다.

처음에 세번째 테스트케이스의 결과를 이해하지 못해 감을 잡지 못하였는데 다른분의 풀이를 참고하여 공부해보았다.

 

[ 소스코드 ]

testCase = int(input())

for _ in range(testCase):
    N, M = map(int,input().split())

    printList = list(map(int,input().split()))
    checkList = [0 for _ in range(N)] 
    checkList[M] = 1 # 궁금한 문서위치 저장

    count=0
    while True:
        if printList[0] == max(printList):
            count+=1

            if checkList[0] != 1:
                del printList[0]
                del checkList[0]
            else:
                print(count)
                break
        else:
            printList.append(printList[0])
            checkList.append(checkList[0])
            del printList[0]
            del checkList[0]