https://www.acmicpc.net/problem/1158
1158번: 요세푸스 문제
첫째 줄에 N과 K가 빈 칸을 사이에 두고 순서대로 주어진다. (1 ≤ K ≤ N ≤ 5,000)
www.acmicpc.net
풀이 과정
큐를 이용하여 문제를 해결할 수 있다. 양의 정수 K가 주어지면 줄의 맨 앞에 있는 사람을 K-1번만큼 뒤로 보낸 뒤 그 뒤에 맨 앞에 있는 사람을 줄에서 빼면 된다. 이것을 큐가 빌 때 까지 반복하면 요세푸스 순열이 구해진다.
코드
import sys
from collections import deque
N, K = map(int, sys.stdin.readline().split())
circle = deque(range(1, N+1))
answer = []
for j in range(N):
for i in range(K-1): circle.append(circle.popleft())
answer.append(circle.popleft())
answer = str(answer)
answer = '<' + answer[1:-1] + '>'
print(answer)
'알고리즘 문제 풀이 > 백준' 카테고리의 다른 글
백준 17413 - 단어 뒤집기2 [파이썬] (0) | 2022.03.23 |
---|---|
백준 9093 - 단어 뒤집기 [파이썬] (0) | 2022.03.23 |
백준 10845 - 큐 [파이썬] (0) | 2022.03.20 |
백준 1874 - 스택 수열 [파이썬] (0) | 2022.03.19 |
백준 9012 - 괄호 [파이썬] (0) | 2022.03.18 |