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

README·2022년 7월 31일
0

파이썬 PS풀이

목록 보기
69/136

문제설명
일정순서마다 수열의 맨앞자리를 제거할 때 그 순열에서 제거되는 수들을 순서대로 출력하는 문제입니다.

작동 순서
1. 수열의 길이와 몇번마다 수를 삭제할지를 정하는 숫자를 입력받습니다.
2. 큐에 수열을 입력합니다.(1부터 N+1까지)
3. 만약 count가 K가 아닌경우 큐 맨앞의 값을 큐 맨뒤로 보내고 count를 +1하고 count가 K인경우 맨앞의 수를 제고하고 count를 0으로 초기화합니다.
4. 삭제되는 수들을 순서대로 출력합니다.

소스코드

import sys
from collections import deque

N, K = map(int, sys.stdin.readline().split())
q = deque()
for i in range(N):
    q.append(i + 1)
count = 0
print("<", end="")
while len(q) > 1:
    count += 1
    if count == K:
        print(q.popleft(), ",", sep="", end=" ")
        count = 0
    else:
        q.append(q.popleft())
print(q.popleft(), ">", sep="", end=" ")
profile
INTP 개발자 지망생

0개의 댓글