직접적으로 정답을 보지 않고 알고리즘 분류에 적혀 있던 자료 구조와 큐를 직접 구글링하여 어떤 자료 구조인지 명확히 인지한 다음 이 자료 구조를 이용해서 어떻게 작성해야할지 고민했다.
N, K = map(int, input().split())
arr = [i for i in range(1, N+1)]
queue = []
t = 1
while True:
if arr == []:
break
else:
if t >= K and t % K == 0:
temp = arr.pop(0)
queue.append(temp)
else:
temp = arr.pop(0)
arr.append(temp)
t += 1
print("<", end="")
for i in range(len(queue)):
if i == len(queue)-1:
print(queue[i], end="")
else:
print(queue[i], end=", ")
print(">")
선입선출(FIFO)이란, 먼저 들어간 데이터가 먼저 밖으로 나온다는 의미이다.
파이썬에서 큐(queue)를 사용하는 가장 간단한 방법은list
를 사용하는 것이다.
list
객체에서pop(0)
을 사용하면 맨 앞에 있는 데이터를 제거할 수 있다.
list
객체에서append()
를 사용하면 맨 뒤에 데이터를 추가할 수 있다.