728x90
반응형
Silver III
# 1966 프린터 큐
링크 : https://www.acmicpc.net/problem/1966
풀이
from collections import deque
# 테스트 케이스 T개
T = int(input())
for i in range(T):
N, M = map(int, input().split())
q = deque(list(map(int, input().split())))
idx = deque(list(range(N)))
cnt = 0
# 최종적으로 M이 제거될 때까지 while문 반복
while M in idx:
# 0번 째 인덱스에 q의 가장 큰 값이 위치하도록 조정
while max(q) != q[0]:
q.append(q.popleft())
idx.append(idx.popleft())
# 조정이 완료되었을 때, 0번 째 인덱스 값 제거하면서 cnt+1
cnt += 1
q.popleft()
idx.popleft()
# M이 제거되었을 때 cnt 값 확인
print(cnt)
후기
- 풀기 전까지 진짜 어려웠는데 풀고 나니 왜 이렇게 어려워했는지 이해 안되는 문제.. ㅎㅎ
- 처음 주어지는 값의 인덱스를 활용해야 한다. 인덱스 위치 값을 활용하기 위해서 idx라는 덱을 하나 만들고 q 변화에 따라서 idx 값 또한 변경시켰다.
'Algorithm Study > Python' 카테고리의 다른 글
[백준 파이썬] #2804 크로스워드 만들기 (0) | 2022.07.23 |
---|---|
[백준 파이썬] # 2447 별 찍기 - 10 (0) | 2022.03.10 |
[백준 파이썬] # 11279 최대 힙 (0) | 2022.03.06 |
[백준 파이썬] # 3273 두 수의 합 (0) | 2022.03.06 |
[백준 파이썬] #10815 숫자 카드 (0) | 2022.03.04 |