티스토리 뷰

문제 링크

 

11866번: 요세푸스 문제 0

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

www.acmicpc.net

문제 풀이

import sys
from collections import deque

input = sys.stdin.readline

n, k = map(int, input().split())
people = deque([i for i in range(1, n + 1)])
josephus = []

for i in range(n):
    for j in range(k):
        people.append(people.popleft())
    josephus.append(people.pop())

print(f'<{", ".join(map(str, josephus))}>')

11866 입출력 예시

*key point: k번째 요소가 맨 앞으로 올 때까지 맨 앞 요소를 맨 뒤로 보낸다. 이후 맨 앞 요소를 빼서 새로운 리스트에 채우면 요세푸스 순열이 된다. 출력은 f string, join, map을 이용해서 간단히 하였다.

댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
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
글 보관함