[Python] 11866번 요세푸스 문제0

이세령·2023년 5월 30일
0

알고리즘

목록 보기
19/43

문제

https://www.acmicpc.net/problem/11866

풀이과정

  • 한 곳을 중심으로 빼낸다.
  • k-1번 반시계 방향으로 회전했을 때 12시 방향의 것을 빼도록 만든다.
  • 예시 순서
    [1,2,3,4,5,6,7] [2,3,4,5,6,7,1] [3,4,5,6,7,1,2] → pop 수행 !
from queue import Queue
n, k = map(int, input().split())
result = []
q = Queue()
# q 순서대로 입력하기
for i in range(1, n+1):
    q.put(i)

# 큐가 비어있을 때 까지
while not q.empty():
    # k-1번씩 돌리기
    for i in range(k):
        num = q.get()  # 큐의 맨 앞 자료를 제거하고

        if i == k-1:
            result.append(num)  # i가 k-1번째라면 결과값에 숫자넣기
        else:
            q.put(num)  # 아니라면 큐의 맨 뒤에 다시 넣기

print('<', end="")
for i in range(len(result)-1):
    print("%d, " % result[i], end="")
print(result[-1], end="")
print(">")
profile
https://github.com/Hediar?tab=repositories

0개의 댓글