1964 : 프린터 큐

서희찬·2021년 11월 30일
0

백준

목록 보기
79/105

문제

코드


test = int(input())

for _ in range(test):
    n,m = map(int,input().split()) #n : 문서 갯수 m: 몇번째?
    arr = list(map(int,input().split())) #중요도 
    mPlace=[0 for _ in range(n)]
    mPlace[m]=1 #찾고싶은 위치 표시 
    cnt =0 

    while True :
        if arr[0]==max(arr): #제일 첫번째 요소가 최댓값이라면 
            cnt+=1 
            if mPlace[0]==1: #찾던값 
                print(cnt)
                break 
            else :
                del arr[0]
                del mPlace[0] #필요 없는 값 삭제 
        else :
            arr.append(arr.pop(0)) #최댓값이 아닌 경우 뒤에 붙이기 
            mPlace.append(mPlace.pop(0)) #뒤로 붙이기 

해설

중요도를 arr리스트를 통해서 받은 후 mPlace 리스트에서 내가 찾고 싶은 순서가 출력되는 값을 1로 하고 나머지는 0으로 초기화 시켜준다.
그 후 반복문을 돌면서 배열의 첫번째 요소가 최댓값인지 확인하고 만약 맞다면 카운트를 올려주는데 거기에 이것이 찾는 값이라면 출력후 반복문을 탈출하게 해준다.

그런데, 찾는 값이 아니라면 그 앞의 요소는 카운트를 하나 올리고 프린터 된 항목이니깐 del 메소드를 사용해서 없애준다.

그리고 최댓값이 아닌 경우에는 배열의 뒤로 붙여나가는 과정을 반복해주면 된다.

profile
부족한 실력을 엉덩이 힘으로 채워나가는 개발자 서희찬입니다 :)

0개의 댓글