티스토리 뷰

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

 

1966번: 프린터 큐

문제 여러분도 알다시피 여러분의 프린터 기기는 여러분이 인쇄하고자 하는 문서를 인쇄 명령을 받은 ‘순서대로’, 즉 먼저 요청된 것을 먼저 인쇄한다. 여러 개의 문서가 쌓인다면 Queue 자료구조에 쌓여서 FIFO - First In First Out - 에 따라 인쇄가 되게 된다. 하지만 상근이는 새로운 프린터기 내부 소프트웨어를 개발하였는데, 이 프린터기는 다음과 같은 조건에 따라 인쇄를 하게 된다. 현재 Queue의 가장 앞에 있는 문서의 ‘중요도’를

www.acmicpc.net

*M번째 문서의 중요도가 가장 높을 때까지 문서를 맨 뒤로 재배치(index의 맨 끝)

 

import sys

for _ in range(int(sys.stdin.readline())):
    N, M = map(int, sys.stdin.readline().split())

    weight = list(map(int, sys.stdin.readline().split()))

    res = 1
    index = [i for i in range(N)]

    while(1): 
        if (index[0] == M) and (weight[index[0]] == max(weight)):
        # 현재 문서는 M번째 문서이며, 중요도가 가장 높은 경우
            break
        
        else:	# M번째 문서보다 중요도가 높은 문서가 있는 경우 
            if weight[index[0]] == max(weight):	#현재 문서의 중요도가 가장 높을 경우
                weight[index[0]] = -1
                index.remove(index[0]) # 문서 출력
                res += 1
             
            else: 
            	# 문서를 맨 뒤로 재배치
                index.append(index[0])
                index.remove(index[0])

    print(res)
공지사항
최근에 올라온 글
«   2024/11   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
글 보관함