문제
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)))
'문제 > 백준' 카테고리의 다른 글
[백준/BOJ] 10814번: 나이순 정렬 (파이썬3/Python3) (0) | 2021.07.18 |
---|---|
[백준/BOJ] 10867번: 중복 빼고 정렬하기 (파이썬3/Python3) (0) | 2021.07.18 |
[백준/BOJ] 2775번: 부녀회장이 될테야 (파이썬3/Python3) (0) | 2021.07.11 |
[백준/BOJ] 3052번: 나머지 (파이썬3/Python3) (0) | 2021.07.11 |
[백준/BOJ] 10757번: 큰 수 A+B (파이썬3/Python3) (2) | 2021.07.11 |