[Baekjoon] 1158 - 요세푸스 문제 (Python)
문제
풀이
- deque()을 사용해 1 ~ n을 넣어준다.
- q가 비어있을 때 까지 while문을 돈다.
- for문의 범위는 k로, q의 맨 왼쪽 값을 popleft()를 사용해 제거하고 그 값을 remove_list에 다시 append 하면 제거해야 할 k번째 수가 제일 왼쪽에 들어간다.
- k번째 수를 제거해 remove_list에 추가한다.
- 출력 형식에 맞춰 출력한다.
1
2
3
4
5
6
7
8
9
10
11
12
13
from collections import deque
n, k = map(int, input().split())
q = deque(range(1, n+1))
remove_list = []
while q:
for _ in range(k-1):
q.append(q.popleft())
remove_list.append(q.popleft())
print(str(remove_list).replace('[', '<').replace(']', '>'))
deque() 사용해서 풀어보고 list도 사용해서 풀어봤는데 조금 어려웠다.
Leave a comment