Data Structure/Queue

[SWEA 5099번] 피자굽기

킹우현 2023. 9. 21. 00:07

from collections import deque

t = int(input())

answer = []

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

    cheese = list(map(int,input().split()))

    data = [(i+1,cheese[i]) for i in range(m)]

    queue = deque([])
    
    for _ in range(n):
        queue.append(data.pop(0))

    while queue:
        if len(queue) == 1:
            v = queue.popleft()
            answer.append(v[0])
            break
        
        index, remain = queue.popleft()

        if remain // 2 != 0:
            queue.append((index,remain//2))
        else:
            if len(data) >= 1:
                queue.append(data.pop(0))

for i,value in enumerate(answer):
    print(f"#{i+1} {value}")

 

이번 문제는 주어진 조건대로 피자를 순서대로 넣고, 치즈를 녹이면서 다 녹은 피자는 꺼내고 새로운 피자를 넣는 방식으로 진행했을 때 최종적으로 남는 피자의 번호를 구하는 문제이다.

 

deque 라이브러리를 사용하여 풀이하였고, Queue 자료구조에 대해 복습해볼 수 있는 문제였다 :)