1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23 | for t in range(int(input())):
n, m = list(map(int, input().split()))
tmp = list(map(int, input().split()))
cheese = []
for i in range(m):
cheese.append([i+1, tmp[i]]) # 피자 넘버를 기억하기 위해서 인덱스와 데이터값을 같이 저장
# 초기화
cQ = []
for i in range(n):
cQ.append(cheese.pop(0))
idx = 0
while True:
cQ[idx][1] = cQ[idx][1] // 2
if cQ[idx][1] == 0:
pizza_number = cQ[idx][0]
if len(cheese) > 0:
cQ[idx] = cheese.pop(0)
idx = (idx + 1) % n
if sum(i[1] for i in cQ) == 0: break # 피자 치즈가 하나도 안남아있을 때 탈출
print("#{} {}".format(t+1, pizza_number))
|
5099. [파이썬 S/W 문제해결 기본] 6일차 - 피자 굽기
기본아이디어: 화덕을 확인하는게 1로 고정되어있지만, 알고리즘상에서는 idx가 계속 바뀌면서 확인하고 확인할 때마다 한바퀴 도는 것으로 생각해서 값이 절반으로 줄어든다.
댓글
댓글 쓰기