코딩테스트 대비/BOJ
[Baekjoon/Python] 11866번: 요세푸스 문제 0 - 효과는 굉장했다!
bluetag_boy
2021. 11. 2. 03:35
반응형
11866번: 요세푸스 문제 0
첫째 줄에 N과 K가 빈 칸을 사이에 두고 순서대로 주어진다. (1 ≤ K ≤ N ≤ 1,000)
www.acmicpc.net
알고리즘 분류
- 구현
- 자료 구조
- 큐
SOLUTION
from collections import deque
import sys
N, K = map(int, sys.stdin.readline().split())
josephus = deque([i for i in range(1,N+1)]) # deque로 선언 rotate() 함수를 쓰기 위해
answer = ['<']
while True:
josephus.rotate(-K) # 왼쪽으로 K만큼 이동 0번째 인덱스는 마지막 인덱스로 이동한다]
if len(josephus) > 1:
answer.append(str(josephus.pop()) + ', ') # -K만큼 이동시켜서 K번째 사람을 제거시킨다.
if len(josephus) == 1: # josephus안에 값이 1개인 경우는 > 가 붙어서 출력되어야 하므로 따로 설정
answer.append(str(josephus.pop()) + '>')
break
answer = ''.join(answer)
print(answer)