[백준] 1966 프린터 큐

cheeeese·2022년 4월 25일
0

코딩테스트 연습

목록 보기
88/151
post-thumbnail

📖 문제

https://www.acmicpc.net/problem/1966

💻 내 코드

x=int(input())


for i in range(x):
    n,m=map(int, input().split())
    plist=list(map(int, input().split()))
    idx=[0 for _ in range(n)]
    idx[m]=1

    cnt=0
    
    while True:
        if plist[0]==max(plist):
            cnt+=1
            if idx[0]==1:
                print(cnt)
                break
            else:
                plist.pop(0)
                idx.pop(0)
        else:
            plist.append(plist[0])
            idx.append(idx[0])
            plist.pop(0)
            idx.pop(0)

💡 풀이

idx=[0 for _ in range(n)]
idx[m]=1
  • 궁금한 문서의 위치 저장

  • plist[0]이 최댓값이 아니라면 맨 뒤로 보내주어야 한다
  • 궁금한 문서의 위치를 저장한 리스트도 똑같이 맨 앞의 값을 뒤로 보내준다
  • 만약 plist[0]이 최댓값이라면 인쇄한 횟수인 cnt를 1 더해줌
  • 궁금한 문서의 위치를 저장한 리스트의 맨 앞의 값이 1이라면 출력해주고 break

0개의 댓글