알고리즘

백준 11866 - 요세푸스 문제 0 (Python)

jamie2779 2023. 7. 28. 06:38

문제

https://www.acmicpc.net/problem/11866

 

11866번: 요세푸스 문제 0

첫째 줄에 N과 K가 빈 칸을 사이에 두고 순서대로 주어진다. (1 ≤ K ≤ N ≤ 1,000)

www.acmicpc.net

풀이

from collections import deque
n,k = map(int,input().split())
lst = deque(range(1,n+1))

r = []
while lst:
    for i in range(k-1):
        lst.append(lst[0])
        lst.popleft()
    r.append(str(lst.popleft()))
print(f'<{", ".join(r)}>')

큐를 사용하여 풀이하였다.

 

큐에 1~n을 넣어두고 앞에서 pop과 push를 k-1번 반복한뒤 pop을 실행하여 값을 저장해둔다.

이 과정을 모든 요소가 제거 될 때 까지 수행한 뒤 출력해주는 알고리즘이다.