알고리즘/[Python] 백준

(Python) 백준 1966번 : 프린터 큐

 

출처 : https://www.acmicpc.net/problem/1966

 

1966번: 프린터 큐

문제 여러분도 알다시피 여러분의 프린터 기기는 여러분이 인쇄하고자 하는 문서를 인쇄 명령을 받은 ‘순서대로’, 즉 먼저 요청된 것을 먼저 인쇄한다. 여러 개의 문서가 쌓인다면 Queue 자료구조에 쌓여서 FIFO - First In First Out - 에 따라 인쇄가 되게 된다. 하지만 상근이는 새로운 프린터기 내부 소프트웨어를 개발하였는데, 이 프린터기는 다음과 같은 조건에 따라 인쇄를 하게 된다. 현재 Queue의 가장 앞에 있는 문서의 ‘중요도’를

www.acmicpc.net


 

(Python) 백준 1966번 프린터 큐

(Python) 백준 1966번 : 프린터 큐

출처 : https://www.acmicpc.net/problem/1966

  • 알고리즘 분류
    • 브루트 포스
    • 시뮬레이션

In [1]:
# import sys
# input = sys.stdin.readline()

def functions(m, queue, cnt):
    while(1):
        notice = 1
        for i in range(1, len(queue)):
            if(queue[0][1] < queue[i][1]):
                queue.append(queue[0])
                del queue[0]
                notice = 0
                break
        if(notice == 0):
            continue
        else:
            cnt += 1
            if(queue[0][0] == m):
                break
            else:
                del queue[0]
    return cnt
In [2]:
#입력 갯수
ip = int(input())

answer = [] ## 출력 값

list1 = []
list2 = []
for i in range(ip):
    list1.clear()
    list2.clear()
    N, M = map(int, input().split())
    list1 = list(map(int, input().split()))
    for j in range(N):
        list2.append([j, list1[j]])
    answer.append(functions(M, list2, 0))
3
1 0
5
4 2
1 2 3 4
6 0
1 1 9 1 1 1
In [3]:
for item in answer:
    print(item)
1
2
5