[BOJ] 11866. 요세푸스 문제 0(python)
📌문제
💪아이디어
원만들기
queue로 맨 앞 요소를 빼고 다시 queue의 뒤에 붙이는 식으로 순환하도록 한다.k번째 요소 빼기
숫자를 빼면서 몇 번째인지 확인하고 k번째의 숫자라면 그 숫자는 queue 뒤에 붙이지 않고 요세푸스 수열의 요소에 넣는다. 그리고 다시 k번째부터 세기 위해서 초기화해준다.순환
요세푸스 수열에는 모든 요소가 들어있어야 하기 떄문에 queue가 비었다면 순환을 멈추게 한다.요세푸스 수열 출력
< 수열 숫자 , , ... ,>
의 형식으로 출력되어야한다. 요세푸스 수열요소들을 출력하기 위해서', '.join
을 사용한다. join의 매개변수로는 str타입이기 때문에 int을 str으로 변환한다.
🥂코드
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
from collections import deque
answer=[]
n,k = map(int,input().split())
queue = deque([i for i in range(1,n+1)])
cnt = k
while queue:
cnt-=1
queue.append(queue.popleft())
if cnt==0:
cnt = k
answer.append(queue.pop())
print('<'+', '.join(map(str,answer))+'>')
This post is licensed under CC BY 4.0 by the author.
Comments powered by Disqus.