What I Learned/Algorithm Practice
[백준 - python] 11866번: 요세푸스 문제 0
Interrobang
2023. 11. 10. 23:04
문제 링크
11866번: 요세푸스 문제 0
첫째 줄에 N과 K가 빈 칸을 사이에 두고 순서대로 주어진다. (1 ≤ K ≤ N ≤ 1,000)
www.acmicpc.net
문제 풀이
import sys
from collections import deque
input = sys.stdin.readline
n, k = map(int, input().split())
people = deque([i for i in range(1, n + 1)])
josephus = []
for i in range(n):
for j in range(k):
people.append(people.popleft())
josephus.append(people.pop())
print(f'<{", ".join(map(str, josephus))}>')
*key point: k번째 요소가 맨 앞으로 올 때까지 맨 앞 요소를 맨 뒤로 보낸다. 이후 맨 앞 요소를 빼서 새로운 리스트에 채우면 요세푸스 순열이 된다. 출력은 f string, join, map을 이용해서 간단히 하였다.