Algoritm/BOJ

[BOJ] 1158번 : 요세푸스 문제

twoDeveloper 2021. 9. 12. 14:48

■ 문제풀이

· 동그란 원이라 생각하고 풀면 쉬움

 

 

■ 문제해답

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