■ 문제풀이
· 동그란 원이라 생각하고 풀면 쉬움
■ 문제해답
import sys
input = sys.stdin.readline
n, k = map(int, input().split())
josephus = []
for i in range(1, n + 1):
josephus.append(i)
result = []
num = k - 1
while len(josephus):
if num >= len(josephus):
num = num - len(josephus)
else:
result.append(str(josephus.pop(num)))
num = num + (k - 1)
print("<", ", ".join(result), ">", sep = '')
문제출처 : https://www.acmicpc.net/problem/1158
1158번: 요세푸스 문제
첫째 줄에 N과 K가 빈 칸을 사이에 두고 순서대로 주어진다. (1 ≤ K ≤ N ≤ 5,000)
www.acmicpc.net
'Algoritm > BOJ' 카테고리의 다른 글
[BOJ] 1935번 : 후위 표기식2 (1) | 2021.09.16 |
---|---|
[BOJ] 10799번 : 쇠막대기 (0) | 2021.09.14 |
[BOJ] 10845 : 큐 (0) | 2021.09.11 |
[BOJ] 9093번 : 단어뒤집기 (0) | 2021.09.08 |
[BOJ] 10828번 : 스택 (0) | 2021.09.07 |