백준 1158 파이썬 (요세푸스 문제)

철웅·2022년 10월 6일
0

BOJ

목록 보기
7/46

문제 : https://www.acmicpc.net/problem/1158


💻 Code

import sys
input = sys.stdin.readline

n, k = map(int, input().split())
circle = [i+1 for i in range(n)]
result = []
num = 0

for _ in range(n):
    num += k-1  
    if num >= len(circle):   
        num = num % len(circle)
    result.append(str(circle.pop(num)))

    
print("<" + ', '.join(result) + ">")  

  • num(index)에 k-1만큼 더하는 이유는 하나가 빠지고(pop) k 만큼 증가하기 때문!
  • k(주기)리스트의 길이(인원 수)보다 같거나 크다면 현재 리스트의 길이로 mod연산을 수행하였다.

쉬워보이면서 쉽지는 않았던 문제...

0개의 댓글