백준 11866 - 요세푸스 문제 0 (Python3)
코드
from collections import deque
n, k = map(int, input().split())
deq = deque(range(1, n + 1))
print('<', end='')
#
while deq:
# k번째 요소를 완전 제거해야 하므로
# k-1번째 요소까지는 덱의 뒤에 다시 저장
for _ in range(k-1):
deq.append(s[0])
deq.popleft()
# 제거된 k번째 요소 출력
print(deq.popleft(), end='')
# 아직 다 비워지지 않았다면 , 출력 => 맨 마지막 요소 출력후에 ,가 찍히지 않음
if deq:
print(',', end=' ')
print('>')
문제 해설
k번째 요소를 삭제하고 k-1번째 까지의 요소는 다음 반복에도 유지되어있어야 하므로 덱의 뒤에 차례대로 추가해준다. 이 과정을 덱이 빌 때까지 반복하면 정답.
댓글남기기