[python]白駿1158号ジョセフス問題
1158号(ジョセフ問題)
これは想像以上に難しい問題です.
queue
で簡単に解けます!たとえば、問題のようにK=3の場合は、配列の前の2つのpopleft()を後ろに送信し、再びpopleft()を正しい配列にアタッチするだけです.->配列が構築されるまで繰り返します
<正解>
from collections import deque
N, K = map(int, stdin.readline().split())
human = deque()
for i in range(N):
human.append(i+1)
re = []
while len(human) >= 1:
for i in range(K-1):
human.append(human.popleft())
re.append(human.popleft())
#정답 출력
print('<', end='')
for i in range(N):
if i == N-1:
print(re[i], end='>')
else:
print(re[i], end=', ')
Reference
この問題について([python]白駿1158号ジョセフス問題), 我々は、より多くの情報をここで見つけました https://velog.io/@sein/Python-백준-1158번テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol