백준 #1158 요세푸스 문제입니다.
사람들이 원을 그리며 앉는 상황에서 문제는 매번 K번째 사람을 빼는 것이다.
선입 선출 데이터 구조 인 대기열을 사용하여 문제를 해결했습니다.
Python에서 액세스하고 사용할 수 있는 deque 데이터 구조를 사용했습니다.
deque 데이터 구조는 popleft()에서 pop()까지 O(1)에서 연산을 수행할 수 있는 데이터 구조입니다.
대기열을 통해 이 문제를 해결하려면 O(NK)의 시간 복잡도가 필요합니다.
내가 작성한 코드는 다음과 같습니다.
from collections import deque
def yosqp():
for i in range(1, K + 1):
temp = queue.popleft()
if i !
= K:
queue.append(temp)
else:
if queue:
print(temp, end=", ")
else:
print(temp, end=">")
if __name__ == '__main__':
N, K = map(int, input().split())
queue = deque((i for i in range(1, N + 1)))
print("<", end="")
while queue:
yosqp()