알고리즘
백준 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을 실행하여 값을 저장해둔다.
이 과정을 모든 요소가 제거 될 때 까지 수행한 뒤 출력해주는 알고리즘이다.