반응형
문제
https://www.acmicpc.net/problem/1966
1966번: 프린터 큐
여러분도 알다시피 여러분의 프린터 기기는 여러분이 인쇄하고자 하는 문서를 인쇄 명령을 받은 ‘순서대로’, 즉 먼저 요청된 것을 먼저 인쇄한다. 여러 개의 문서가 쌓인다면 Queue 자료구조에
www.acmicpc.net
코드
import sys
input = sys.stdin.readline
t = int(input())
for _ in range(t):
cnt = 0
n,m = map(int,input().split())
paper = list(map(int,input().split()))
idx = [i for i in range(len(paper))]
target = idx[m]
while len(paper) > 0:
if paper[0] == max(paper):
if idx[0] == target:
cnt += 1
break
else:
paper.pop(0)
idx.pop(0)
cnt += 1
else:
paper.append(paper.pop(0))
idx.append(idx.pop(0))
print(cnt)
설명
우선 각 조건에 맞게 수를 입력해 준다.
그리고 각 paper의 인덱스를 idx라는 리스트로 생성해 주고,
target을 입력된 문서의 인덱스로 지정해 준다.
paper가 남아있는 동안 반복문을 진행한다.
이때, paper[0]의 수가 paper에서 가장 크지 않다면,
첫 장을 뒤로 보내고, 인덱스도 맞춰서 수정해 준다.
만약 paper[0]이 가장 큰 수이면서, 타깃이라면
카운트를 하나 늘리고 반복문을 종료한다.
그렇지 않다면, paper와 idx를 하나씩 줄여주고 cnt를 하나 늘린 후 다시 진행한다.
이후 카운트 된 횟수를 출력한다.
반응형
'개발 연습장 > 백준 문제풀이' 카테고리의 다른 글
[파이썬, Python] 백준 1920: 수 찾기 (0) | 2023.03.17 |
---|---|
[파이썬, Python] 백준 10866: 덱 (0) | 2023.03.16 |
[파이썬, Python] 백준 11866: 요세푸스 문제 0 (0) | 2023.03.14 |
[파이썬, Python] 백준 2164: 카드2 (0) | 2023.03.10 |
[파이썬, Python] 백준 1874: 스택 수열 (0) | 2023.03.09 |