[백준 BOJ_1966] 프린터 큐 Python 풀이

출처: 백준 온라인 저지

문제

image

풀이

단순히 구현해주었습니다.

중요도를 담는 list인 priority와 몇 번째 문서였는지의 정보를 담는 nth_lst를 만들어주었습니다.

그런 뒤, 지시사항에서 말한대로 가장 앞에 있는 문서의 중요도를 확인하고 나머지 문서들 중 중요도가 더 높은 문서가 있다면 제일 앞에 있던 문서를 제일 뒤로 보냈습니다.

check_p는 검사해주는 중요도 수치입니다. 9에서부터 줄여가며 체크해주었기 때문에 높은 순서대로 정렬됩니다. check_p가 나머지 문서 중에 없다면 바로 break해주었습니다.

이미 정렬된 문서는 q_idx를 늘려주어 무시해주었고, 문서 재배치는 slicing으로 해주었습니다.
priority를 재배치 해줄때 nth_lst도 같이 재배치를 해주어 변경된 순서를 알 수 있게끔 했습니다.

마지막엔 nth_lst를 돌아주며 M번째 문서를 찾아준 뒤 그 문서의 index에서 1을 더한 값으로 출력해주었습니다.

코드

T = int(input())
for _ in range(T):
    N, M = map(int, input().split())
    priority = list(map(int, input().split()))
    nth_lst = [i for i in range(N) ]
    for check_p in range(9, -1, -1):
        q_idx = 0
        for _ in range(N):
            if check_p not in priority[q_idx:]:
                break
            if priority[q_idx] < check_p:
                priority = priority[:q_idx] + priority[q_idx+1:] + [priority[q_idx]]
                nth_lst = nth_lst[:q_idx] + nth_lst[q_idx+1:] + [nth_lst[q_idx]]
            else: q_idx += 1
    for idx, val in enumerate(nth_lst):
        if M == val:
            print(idx+1)
            break

Leave a comment