본문 바로가기
Algorithm/스택&큐&덱&힙

[백준] 1966번 프린터 큐

by HANNI하니 2023. 1. 22.

사용 언어 - Python3

1966번: 프린터 큐 (실버3, 큐)

문제 ★큐 문제

 

1966번: 프린터 큐

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

www.acmicpc.net

 

 

정답

k-1명을 popleft() 하면서 바로 append해주는 deque([]) 문제

(코드 풀이)

1. 변수 선언

n 문서의 개수 / n 문서에서 m이 있는 인덱스 찾기!

가장 중요도가 높은, 큰 숫자를 best에 입력한다. 

q의 가장 왼쪽에 있는 숫자를 pop하고 front에 입력한다.

 

2. 맨 왼쪽의 숫자(front) 와 가장 큰 숫자(best)를 비교한다.

m앞에 있는 숫자를 한 개씩 빼면서 pop했기 때문에, m이 있는 위치가 한 칸 당겨진다.

 

best == front 가장 왼쪽에 있던 숫자와 가장 큰 숫자라면, count += 1

m이 있는 곳이 0보다 작아지면 지금까지의 count가 m이 있는 인덱스라는 뜻!

 

best != front 가장 왼쪽 숫자가 가장 크지 않다면,

front를 q의 맨 뒤로 보내기 위해 append한다.

m이 있는 곳이 0보다 작아지면, m을 맨 뒤로 보내야하기 때문에 인덱스가 len(q)-1이 된다.

 

# 정답
import sys
from collections import deque

test = int(input())
for i in range(test):
    n, m = map(int,input().split())
    q = deque(list(map(int,sys.stdin.readline().split())))
    count = 0
    
    while q :
        best = max(q) #현재의 최댓값
        front = q.popleft()
        m -= 1
        
        if best == front :
            count += 1
            if m < 0:
                print(count)
                break
        else:
            q.append(front)
            if m < 0 :
                m = len(q)-1

 


레퍼런스

  • 정답 참고
 

[백준] 1966번 프린터 큐 (Python 파이썬)

www.acmicpc.net/problem/1966 1966번: 프린터 큐 여러분도 알다시피 여러분의 프린터 기기는 여러분이 인쇄하고자 하는 문서를 인쇄 명령을 받은 ‘순서대로’, 즉 먼저 요청된 것을 먼저 인쇄한다. 여러

hongcoding.tistory.com

  • 깃허브 정답
 

GitHub - yyeongeun/codingtest: 코딩테스트 공부

코딩테스트 공부. Contribute to yyeongeun/codingtest development by creating an account on GitHub.

github.com

 

 

'Algorithm > 스택&큐&덱&힙' 카테고리의 다른 글

[백준] 1021번 회전하는 큐  (0) 2023.01.22
[백준] 10866번 덱  (1) 2023.01.22
[백준] 11866번 요세푸스 문제0  (1) 2023.01.22
[백준] 2164번 카드2  (0) 2023.01.22
[백준] 18258번 큐 2  (0) 2023.01.21

댓글