less than 1 minute read

백준 1966번 링크)


19661
19662


문서가 들어있는 큐와, 프린트 될 순서를 체크할 리스트를 따로 만들어 비교하였습니다.

  1. 맨 앞 문서의 중요도가 제일 크지 않으면 : pop으로 맨앞의 것을 빼서 append로 뒤로 보냈습니다 (문서,순서 둘다)
  2. 맨 앞 문서의 중요도가 제일 크면 : 우선 그것이 구하려는 m 번째 인지 확인하고 count(프린트 된 순서)를 센 후

    m 번째가 맞으면 count를 출력 후 실행을 끝내고
    아니면 pop(0)으로 바로 빼버립니다.


import sys
#sys.stdin=open("input.txt",'r')
input=sys.stdin.readline
t = int(input())

for _ in range(t):
    n, m = map(int, input().split())
    docu = list(map(int, input().split())) #주어진 문서들의 중요도
    rank=[0 for _ in range(n)] #순서 체크할 리스트 따로 만들기
    rank[m] = 1 # m째 문서인지 판단하기 위함 (추후 순서리스트 값이 1이면 m번째 문서로 판단)
    count = 0 # m번째 문서가 몇번째로 프린터 되는지 count (추후 m번째 문서 찾으면 count 출력 후 break)
    while True:
        if docu[0] == max(docu): #첫번째가 제일 중요한 것일 때
            count += 1
            if rank[0] == 1: #순서리스트에서 값이 1이면 구하고자 했던 m번째 문서
                print(count)
                break
            else: #중요도 가장 크지만 m번째 아님 -> 바로 출력하고 빼버리기
                docu.pop(0)
                rank.pop(0)

        else: #첫번째가 제일 중요한것이 아닐 때
            docu.append(docu.pop(0))
            rank.append(rank.pop(0))
            #문서리스트,순서리스트 둘다 맨 앞의 것을 빼서 맨 뒤로 보내줌   

Categories:

Updated: