반응형
코드
from collections import deque
num = int(input())
for i in range(num):
cnt = 0
N, M = map(int,input().split())
imp = deque(list(map(int,input().split())))
while len(imp) > 0:
maxi = max(imp)
if imp[0] == maxi: # 처음 원소값이 최댓값이면
imp.popleft()
if M == 0: # pop된 수가 목표 수이면
cnt += 1
break
else:
cnt += 1
M -= 1 # 한칸씩 당겨짐
else:
a = imp.popleft()
imp.append(a)
if M == 0:
M += len(imp) - 1 # 목표 수가 최대값이 아니면 맨 뒤로 넣어줌
else:
M -= 1
print(cnt)
설명
목표한 수가 몇번째에 위치하는지 알려주는 수인 M의 값을 변하는 상황에 따라 바꿔주었다.
만약 M이 0이 아니고 앞의 숫자가 pop이 되었을 때는 (M-1)을 해주어 한 칸을 당겨주었다. cnt는 0번째 원소가 최댓값과 일치할 때에 1씩 증가시켰다.
M이 0일 때 즉, 다음으로 pop 될 순서가 되었을 때 imp[M]의 값이 최댓값이 아니면 덱의 가장 마지막에 넣어주었고 M의 값을 (덱의 길이 - 1)로 바꿔주었다. 만약 imp[M]의 값이 최대가 맞으면 그때까지 인쇄된 문서의 수인 cnt에 1을 더해 정답을 출력해준다.
반응형
'알고리즘 > 자료구조' 카테고리의 다른 글
[백준][Python] 2346번 풍선 터뜨리기 (0) | 2022.02.10 |
---|---|
[백준][Python] 2504번 괄호의 값 (0) | 2022.02.10 |
[백준][Python] 10799번 쇠막대기 (0) | 2022.02.08 |
[백준][Python] 1935번 후위 표기식2 (0) | 2022.02.07 |
[백준][Python] 1874번 스택 수열 (0) | 2022.02.07 |
댓글