티스토리 뷰

PS/BOJ Python

1158번 - 요세푸스 문제

zpqmdh 2023. 4. 3. 13:03

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

 

1158번: 요세푸스 문제

첫째 줄에 N과 K가 빈 칸을 사이에 두고 순서대로 주어진다. (1 ≤ K ≤ N ≤ 5,000)

www.acmicpc.net

처음에는 재귀로 풀었는데 런타임 에러가 떴다.

그래서 재귀를 안 쓰고 푸는 방법을 생각하다가 바로 Q에서 popleft하는 방법이 떠올랐다.

코드도 훨씬 간단해졌다.

# 요세푸스 문제
import sys
from collections import deque

input = sys.stdin.readline
N, K = map(int, input().split())
Q = deque([i for i in range(1, N+1)])
answer = []

while Q:
    for i in range(1, K):
        Q.append(Q.popleft())
    answer.append(Q.popleft())

print('<', end='')
for a in answer[:-1]:
    print(a, ', ', end='', sep='')
print(answer[-1], '>', sep='')

'PS > BOJ Python' 카테고리의 다른 글

1021번 - 회전하는 큐  (0) 2023.04.04
10816번 - 숫자 카드 2  (0) 2023.04.03
1759번 - 암호 만들기  (0) 2023.04.02
2839번 - 설탕 배달  (0) 2023.04.01
1358번 - 하키  (0) 2023.03.31
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/09   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30
글 보관함