-
1966 프린터 큐(파이썬)백준 문제풀이 2022. 8. 28. 17:31

import sys from collections import deque test=int(sys.stdin.readline()) for i in range(test): n,m=map(int,(sys.stdin.readline().split())) k=deque(map(int,input().split())) count=0 if(n==1): print(1) else: while(len(k)!=0): data2 = k.popleft() k.append(data2) m=m-1 if(data2<max(k)): if(m<0): m=len(k)-1 else: k.pop() if(m>=0): count+=1 else: count+=1 break print(count)거의다 풀었다고 생각했는데 풀지못하였다.. 테스트케이스는 통과했으나 여러가지 반례를 찾아보니 못풀었다..
m의 인덱스를 따라가는 count변수를 두고 큰수가 나갈때마다 count는 -1 count2는 +1을 해서 count2를 출력하는 함수인데 런타임 에러가 자꾸난다.. ㅠ
그래서 확인해보니 순서가 잘못되었다. 애초에 삭제를 먼저하고 인덱스를 구하면 인덱스가 그 안에서 또 변경되므로 이번에는
반복문 맨 처음에 맨 앞 값을 삭제하고 일단 그것을 뒤에 붙인다. 그 후에 if문을통해 방금 뒤에 붙인값이 최대값이면 리스트를 그대로 두고, 찾고싶은 값의 인덱스를 참조하는 m값이 음수 일때는 m 인덱스를 맨뒤로 보내도록 하였다.
만약 뒤에 붙인값이 최대값일 경우는 맨 뒤에 값을 삭제하고, m값이 양수일때(아직 빠지지 않은경우) count값을 +하였고, m값이 음수일때(방금 빠진값이 찾으려 하는 값) count값을 +하고 반복문을 빠져나오도록 하였다.
'백준 문제풀이' 카테고리의 다른 글
BOJ 14889 포도주 시식(JS) (0) 2023.07.10 BOJ 14889 스타티와 링크(JS) (0) 2023.05.20 11866 요세푸스 문제(파이썬) (0) 2022.08.24 백준 1874 스택 수열(파이썬) (0) 2022.08.23 백준 4949 균형잡힌 세상(파이썬) (0) 2022.08.23