출처 : 링크텍스트
Queue
를 이해하기 위한 기초 문제이다. 가장 앞의 요소를 pop
하고 일정한 값을 빼주어 append
하는 과정을 반복하는 문제이다.
for tc in range(10):
T = int(input())
arr = list(map(int, input().split()))
while arr[-1] != 0:
for i in range(1, 6):
arr.append(arr.pop(0) - i)
if arr[-1] <= 0:
arr[-1] = 0
break
print('#{0}'.format(T), *arr)
내장 함수를 사용한 간단한 방법이다.
qsize = 9
Q = [0] * qsize
f = r = 0
def isEmpty():
return f == r
def isFull():
return f == (r + 1) % qsize
def push(item):
global r
r = (r + 1) % qsize
Q[r] = item
def pop():
global f
f = (f + 1) % qsize
return Q[f]
for tc in range(10):
T = int(input())
arr = list(map(int, input().split()))
for val in arr:
push(val)
cnt = 1
while Q[r]:
val = pop() - cnt
cnt += 1
if cnt == 6:
cnt = 1
if val < 0:
val = 0
push(val)
while not isEmpty():
print(pop(), end=' ')
print()
위의 내장함수의 과정을 사용자 정의 함수로 만들어 queue
가 어떠한 방식으로 구동되는지 확인해 보았다.