백준 / 프린터큐 / 1966

6883 단어 python백준python

Question

문제링크
Silver 3

Logic

  1. 조건을 확인하는 대상은 '문서 번호'이므로, 문서 중요로 리스트와 별개로 '문서 번호' 리스트를 저장한다.
  2. 두 리스트를 조건에 따라 동시에 작동시킨다.
    3-1. 리스트 슬라이싱을 이용해 첫 요소와 두번째 이후 요소를 분리시키고, 비교한다. 두번째 이후 요소 리스트에 중요도가 더 큰 항목이 있다면 첫 요소를 맨 뒤로 보낸다.
    3-2. 가장 높다면 해당 요소를 출력하고, pop.(0) 하여 첫번째 요소를 출력한다.

Code

from sys import stdin

for _ in range(int(stdin.readline().strip())):
    N,M = map(int,stdin.readline().strip().split())
    raw = list(map(int,stdin.readline().strip().split()))
    num = [ i for i in range(N) ]
    cnt=0
    if len(raw)==1 : print(1)
    else:
        while True:
            if len(raw)==1:
                print(cnt+1)
                break
            if raw[0] < max(raw[1:]) :
                raw = raw[1:] + [raw[0]]
                num = num[1:] + [num[0]]
            else :
                if num[0] == M :
                    print(cnt+1)
                    break
                else :
                    cnt+=1
                    raw.pop(0)
                    num.pop(0)

좋은 웹페이지 즐겨찾기