사용 언어 - Python3
1966번: 프린터 큐 (실버3, 큐)
문제 ★큐 문제★
정답
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
레퍼런스
- 정답 참고
- 깃허브 정답
'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 |
댓글