문제/백준

[백준/BOJ] 11866번: 요세푸스 문제 0 (파이썬3/Python3)

개 살구 2021. 7. 18. 15:45

문제

https://www.acmicpc.net/problem/11866

 

11866번: 요세푸스 문제 0

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

www.acmicpc.net


생각

map을 사용해서 input().split()해서 값을 받자!

1부터 N까지의 데이터 리스트를 만들어주고,

K-1번째부터 시작해서(인덱스는 0부터 시작) +K-1만큼 이동하여 pop해준다!

pop해준 것은 다른 리스트에 저장하거나 프린트

데이터리스트 개수에 비해 위치가 더 크면 위치를 조정해준다! (남은 데이터 개수로 나눈 나머지)

남은 데이터 개수가 0개가 되면 결과값 Print!

결과를 저장해둔 list를 join하고 형식에 맞춰 출력하면 끝!


코드

N, K = map(int, input().split())
D = [x for x in range(1, N+1)]
R = []
P = 0
while (len(D) > 0):
  P += K-1
  if P > len(D)-1:
    P %= len(D)
  R.append(str(D.pop(P)))

print("<{result}>".format(result = ", ".join(R)))