문제
https://www.acmicpc.net/problem/1966
풀이
printer 순서를 저장할 큐를 생성 후에 여기에 프린터 중요도를 순서대로 입력한다
인덱스 번호를 저장할 큐를 생성하고 0부터 n-1까지 입력한다.
주의할 점은 프린터 중요도는 1이상 9 이하 숫자이며
프린터 인덱스 번호는 0부터 n-1까지이며 프린터 출력 순서는 1부터 n까지 이다.
현재 프린터 큐에서 몇 번째에 문서가 놓여있는지를 나타내는 M이 0부터 N 사이이다.
(M을 0부터 N 사이여서 조금 헷갈렸다.)
본인이 작성한 풀이는 다음과 같다.
from collections import deque
# 테스트케이스 입력
t = int(input())
for tc in range(t):
n, m = map(int, input().split())
# 프린터 중요도 순서를 입력받고 deque로 선언
printer = list(map(int, input().split()))
printerQueue = deque(printer)
# 프린터 위치를 저장할 인덱스 선언
indexQueue = deque()
for i in range(n):
indexQueue.append(i)
cnt = 0
# 프린터 큐가 빌 때까지 반복함
while printerQueue:
# 프린터 큐 맨 왼쪽 원소가 전체 원소들 중에서 가장 큰 값일 때
if printerQueue[0] == max(printerQueue):
cnt += 1 # 카운트 증가
printerQueue.popleft() # 맨 왼쪽 원소를 pop연산
if indexQueue.popleft() == m: # pop연산한 원소가 찾고자하는 프린터 문서라면
# 카운트 출력 후 해당 테스트케이스 종료
print(cnt)
break
# 가장 큰 값이 아니면 맨 왼쪽 원소pop 해서 큐의 오른쪽에 append함
# 프린터 위치를 나타내는 인덱스도 같은 연산을 실행
else:
printerQueue.append(printerQueue.popleft())
indexQueue.append(indexQueue.popleft())
'Problem Solving > CT-Python' 카테고리의 다른 글
[백준/DFS-BFS] 2468: 안전 영역 - 파이썬 (0) | 2022.05.17 |
---|---|
[백준/자료구조] 6198: 옥상 정원 꾸미기 - 파이썬 (0) | 2022.05.16 |
[백준/자료구조] 1620: 나는야 포켓몬 마스터 이다솜 - 파이썬 (0) | 2022.05.13 |
[백준/구현] 2116: 주사위 쌓기 - 파이썬 (0) | 2022.05.13 |
[백준/누적합] 11659: 구간 합 구하기 - 파이썬 (0) | 2022.05.13 |