[baekjoon] 프린터 큐

김민서·2024년 1월 4일
0

알고리즘 문제풀이

목록 보기
4/47

링크텍스트
이 프린터기는 다음과 같은 조건에 따라 인쇄를 하게 된다.

현재 Queue의 가장 앞에 있는 문서의 ‘중요도’를 확인한다.
나머지 문서들 중 현재 문서보다 중요도가 높은 문서가 하나라도 있다면, 이 문서를 인쇄하지 않고 Queue의 가장 뒤에 재배치 한다. 그렇지 않다면 바로 인쇄를 한다.

*중요도는 숫자가 큰 순서이다. (처음에 작은 순서라고 생각하고 풀었다.)

from collections import deque

q = int(input())

for _ in range(q):
	n, m = input().split()
    arr = list(map(int, (input()).split)))
    prints_deque = deque(arr)
    
    count = 1 # 인쇄 순서 카운터
    
    while len(prints_deque) > 0:  # 큐에 문서들이 들어있는 동안 반복
    
    	# 인쇄 순서를 찾으려는 문서의 위치
    	if m >= 0: m = m - 1
        else: m = len(arr) - 1
        
        # 가장 앞에 있는 문서보다 큐에 들어있는 문서들 중 가장 우선순위가 높은 문서가 존재할 경우
        # 그 문서를 꺼내서 프린터의 맨 뒷 순서로 보냄
        if prints_deque[0] < max(prints_deque):
        	prints_deque.append(prints_deque.popleft()) 
           
        else:  # 가장 앞에 있는 문서가 가장 우선순위가 높은 문서일 경우
        	if m == 0: break
            prints_deque.popleft() # 출력
            count += 1 # (인쇄 순서를 찾으려는 문서 입장에서 보면 순서 한단계 뒤로 밀리게 되는 것)         
            
     print(count)
            

다시 읽으니까 포인터 뭔 소린지 모르겠음.. 다시 정리하기

0개의 댓글