https://www.acmicpc.net/problem/11866
11866번: 요세푸스 문제 0
첫째 줄에 N과 K가 빈 칸을 사이에 두고 순서대로 주어진다. (1 ≤ K ≤ N ≤ 1,000)
www.acmicpc.net
- 입력과 출력

- 소스코드
from collections import deque
n,m = map(int,input().split())
deq = deque(i for i in range(1,n+1))
res = []
cnt = 0
while len(deq) != 0:
popData = deq.popleft()
cnt += 1
if cnt % m == 0:
res.append(popData)
else:
deq.append(popData)
print('<'+', '.join(map(str,res)) + '>')
- 해설
이 문제는 데크 문제로 대표적이라고 할 수 있다.
데크는 리스트의 양쪽 모두 접근이 가능한 양방향 큐 라고 생각하면된다.
1 2 3 4 5 6 7 이라는 리스트가 있으면 맨 왼쪽 숫자를 꺼내어 cnt 를 센다
cnt 가 입력된 m 과 같아지면 출력 할 리스트에 새로 추가를 하고
아니라면 맨 왼쪽에 popleft 한 데이터를 다시 맨 오른쪽으로 다시 집어넣어서 순회하면 된다.
'Backjoon' 카테고리의 다른 글
| Backjoon problem 10828 스택 - python (0) | 2023.05.18 |
|---|---|
| Backjoon problem 1259 팰린드롬수 - python (0) | 2023.05.18 |
| Backjoon problem 1181 단어 정렬 - python (0) | 2023.05.18 |
| Backjoon problem 10898 수 정렬하기 3- python (0) | 2023.05.18 |
| Backjoon problem 1987 소수 찾기 - python (0) | 2023.05.04 |