사용 언어 - 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 |
댓글