백준|11866번|요세푸스 문제

README·2022년 7월 31일
0

파이썬 PS풀이

목록 보기
50/136

문제설명
n명의 사람 원으로 둘러앉아있을 때 순서대로 k번째 사람을 제거하는 요세푸스 문제를 프로그래밍으로 구현하여 제거되는 사람들의 순서를 출력하는 문제입니다.

작동 순서
1. N과 K를 입력받습니다.
2. 1부터 N까지를 deque로 구현합니다.
3. 반복문을 이용해서 deque의 앞에서부터 하나씩 맨뒤로 보내는 행위를 K번수행합니다.
4. K번 수행한뒤 맨앞의 사람을 제거합니다.
5. 3번부터 4번을 N-1번 수행합니다.
6. 마지막 순서는 ,대신에 >가 붙어야하므로 반복문 밖에서 따로 수행해줍니다.

소스코드

import sys
from collections import deque
N, K = map(int, sys.stdin.readline().split())
deq = deque([i for i in range(1, N+1)])
print("<", end="")
for i in range(N-1):
    for j in range(K):
        deq.append(deq.popleft())
    print(deq.pop(), end=", ")
print(deq.pop(), end=">")

후기
프로그래밍할때 수학적인 능력도 중요하고 많은 유형의 문제를 알고 있는 것이 중요하다는 것을 느겼습니다.

profile
INTP 개발자 지망생

0개의 댓글