[백준] 1966번

코린이·2022년 5월 24일
0

백준

목록 보기
31/38

📢 1966번 문제

백준 문제 링크

💡 풀이

사용 언어 : python
x : 프린터 기기로 인쇄할 문서 개수
y : 궁금한 문서 위치(타겟 위치)
imp : x개의 문서 중요도가 저장된 list
order: 타겟(궁금한 문서)의 출력 순서


imp[0]이 max(imp)인 경우
그 문서를 출력해야 하므로 order을 +1해준다.
만약 y 가 0이라면 ( 즉 궁금한 문서의 위치가 0번째라면 ) order를 출력하고
아니라면 문서 하나가 출력이 되었으므로 y위치를 앞으로 땡겨준다 ( y -= 1 )

imp[0]이 max(imp)가 아닌 경우
imp[0]을 맨뒤로 보낸 후
y위치 또한 앞으로 하나 땡겨준다.( y-=1 )
이때 y == 0인 경우 ( 즉 궁금한 문서의 위치가 0이지만, max값은 아님 )
그 문서는 맨뒤로 보내버리므로 y = len(imp)-1이 된다.


💡 코드

# 프린트 큐
# 1966번

import sys

T = int(sys.stdin.readline())

for _ in range(T):
    # x는 프린터 기기로 인쇄할 문서 개수
    # y는 궁금한 문서의 위치
    x, y = list(map(int, sys.stdin.readline().split()))
    imp = list(map(int, sys.stdin.readline().split()))
    
    # order은 몇번째로 출력되는지 저장하는 변수
    order = 0

    while 1:
        if imp[0] == max(imp):
            order += 1
            if y == 0:
                print(order)
                break
            else:
                y -= 1
                imp.pop(0)
        else:
            imp.append(imp[0])
            imp.pop(0)
            if y == 0:
                y = len(imp)-1
            else:
                y -= 1
profile
초보 개발자

0개의 댓글