본문 바로가기
ALGORITHM/백준

[BOJ/PYTHON] 1158. 요세푸스 문제

by 뭉망뭉 2023. 6. 1.

백준 문제 링크: https://www.acmicpc.net/problem/1158

문제 요약

(N, K)-요세프스 순열 구하기

요세푸스 순열: 원을 이뤄 앉아있는 사람 중 k번째 사람을 순서대로 제거.

핵심 아이디어

문제에서 사람이 원을 이뤄 앉아있다는 내용을 읽고 바로 원형 큐를 생각하면 된다.

k번째 사람을 순서대로 제거해야 하는데, rotate로 k번을 돌려줘 제거할 사람을 맨 앞에 오게 만들고, 맨 앞 사람을 pop해주면 된다.

풀이

# silver4-1158. 요세푸스 문제

import sys 
from collections import deque
input = sys.stdin.readline

n, k = map(int, input().split())
q = deque(range(1, n+1))
pop_list = []

while q:
    q.rotate(-(k - 1))
    pop_num = q.popleft()
    pop_list.append(pop_num)
print("<", end='')
print(*pop_list, sep=', ', end='')
print(">")

실행 시간

메모리 34228KB, 시간 68ms (python3)

'ALGORITHM > 백준' 카테고리의 다른 글

[BOJ/PYTHON] 3078. 좋은 친구  (0) 2023.06.01
[BOJ/PYTHON] 20301. 반전 요세푸스  (0) 2023.06.01
[BOJ/PYTHON] 1935. 후위 표기식2  (0) 2023.06.01
[BOJ/PYTHON] 9012. 괄호  (0) 2023.06.01
[BOJ/PYTHON] 1026. 보물  (1) 2023.05.25

댓글