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 자료구조에 대해 복습해볼 수 있는 문제였다 :)
'Data Structure 🛠️ > Queue' 카테고리의 다른 글
[소프티어 6270번] GBC (0) | 2024.06.19 |
---|---|
[프로그래머스 PCCP 모의고사 3번] 카페 확장 (0) | 2023.11.11 |
[프로그래머스 Lv.2] 다리를 지나는 트럭 (0) | 2023.09.21 |
[프로그래머스 Lv.2] 프로세스 (0) | 2023.09.21 |
[프로그래머스 Lv.2] 기능개발 (0) | 2023.09.21 |