백준_1966번

정소담·2023년 2월 27일
0

BOJ Short Review

목록 보기
39/44
post-thumbnail

1966번 프린터 큐

출력 대기중인 문서들이 있고 문서들 마다 중요도가 있다.
제일 높은 중요도인 문서부터 출력하고 출력하려는 문서가 제일 높은 중요도가 아니면 대기열의 맨 뒤로 보낸다.

테스트케이스들이 주어지고 출력하려는 문서가 몇 개 인지와 몇 번째로 인쇄 되는지 궁금한 타겟 문서의 현재 위치 그리고 문서들의 중요도가 주어진다.
타겟 문서가 몇번째로 인쇄 되는지 출력하는 문제.

for _ in range(int(input())): # 테스트 케이스
    n,m = map(int,input().split()) # 출력대기수, 타겟문서위치
    num = list(map(int,input().split())) # 출력 대기 문서들의 중요도 리스트
    lst = [(i, idx) for idx, i in enumerate(num)] 
    # (중요도, 각 문서들의 위치) 리스트
    cnt = 0 # 몇 번째 인쇄인지 카운팅

    while 1:
        if max(lst)[0] == lst[0][0]: 
        # 리스트에서 중요도가 가장 높은 문서가 첫번째 순서일 때
            cnt += 1 # 인쇄 순서 + 1
            if lst[0][1] == m: # 내가 찾고자 하는 타겟문서이면
                print(cnt) # 몇 번째 인쇄인지 출력
                break
            else:
                lst.pop(0) # 찾는 문서가 아니면 삭제
        else: # 중요도가 가장 높은 문서가 첫번째가 아니면 맨 뒤로 보냄
            lst.append(lst.pop(0))
profile
Hi ! I'm newbie :)

0개의 댓글