Notice
Recent Posts
Recent Comments
Link
«   2025/07   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31
Archives
Today
Total
관리 메뉴

행복한 개구리

백준 22.04.02. 1966번 - 프린터 큐 본문

Algorithm/BaekJoon

백준 22.04.02. 1966번 - 프린터 큐

HappyFrog 2022. 4. 2. 21:42

t = int(input())


for i in range(t):
    n, m = map(int, input().split())

    prior = list(map(int, input().split()))
    prints = [[i, prior[i]] for i in range(n)]
    k = 0
    cnt = 0

    while True:
        if prints[0][1] == max(prior):
            cnt += 1
            if prints[0][0] == m:
                print(cnt)
                break
            else:
                prints.pop(0)
                prior.remove(max(prior))
        else:
            prints.append(prints.pop(0))
  • 큐의 특성인 FIFO(First In First Out)을 이용하여 가장 앞에 있는 명령의 중요도가 가장 우선이 아니라면 맨 뒤로 보내야합니다.
  • 우선 몇번째인지 표시할 인덱스와 중요도를 함께 묶어서 저장하기 위해 2차원 배열을 사용했습니다.
    • 배열 요소의 0인덱스는 해당 명령의 인덱스, 1인덱스는 명령의 중요도를 표시합니다.
  • 따라서 큐의 0인덱스만 확인하여 cnt(count)를 늘리던가, 출력을 하던가, 맨 뒤로 보내던가 세가지 중 한가지 작업을 해야하기 때문에 분기를 그에 따라 나눠줍니다.