Computer Science/백준

백준 1966번 프린터 큐

Dior2ky 2021. 8. 11. 16:07
반응형

백준 1966번 문제

제목에서도 알 수 있듯이 큐와 관련된 문제이다.

기본적인 큐의 push와 pop을 구현하면 되지만 이 문제에서는 중요도를 두어 중요도가 높은 문서가 큐에 있으면 맨 뒤로 보내기 때문에 pop을 한 뒤 다시 push를 해주면 될 것으로 보인다. 

 

구현한 코드이다. 

obj = int(input())

for i in range(obj):
    count = 0
    n, x = input().split()
    n = int(n)
    x = int(x)
    arr = input().split()
    for j in range(n):
        arr[j] = int(arr[j])
    while True:

        flag = 0

        for j in range(len(arr)):
            if arr[0] < arr[j]:
                flag = 1

        if flag == 1:
            arr.append(arr[0])
            del arr[0]
            if x == 0:
                x = len(arr) - 1
            else:
                x -= 1
        else:
            count += 1
            del arr[0]
            if x == 0:
                break
            else:
                x -= 1

    print(count)

원하는 문서의 위치인 x값의 변화를 통해 계속 따라가 주는 것이 가장 중요한 부분이었다. 

기본적인 큐의 구현에 x값의 변화, 중요도가 더 높은 문서가 있다면 문서를 뒤로 돌리는 부분 세가지를 생각하여 구현하면 

쉽게 풀린다. 

 

성공!

반응형