[白俊11866号-Python Python]ジョセフス


白駿11866号-ジョセフス
Solution
  • 条件:1番からN番まで、N人は1つの円に座って、正数K(≦N).
    今は順番にK人目を除いています.一人が取り除かれると、残りの人からなる円に沿ってこの過程が続きます.この過程はN人全員がクリアされるまで
  • 続く.
    問題を見るとappendとpopを使って問題を解決できると思います.
    rotateで簡単に解けると思うのでrotateを使います.
    問題を解決してから探してみると、リストを使って解く時間がもっと短いようです.
    N個の数の前にrotateを新しく作成したリストに追加し、K個の数の前にrotateを新しく作成したリストに追加します.
    結果リストを作成し、出力条件に基づいて出力します.
    Code
    from collections import deque
    
    N, K = map(int,input().split())
    deq = deque(i + 1 for i in range(N))
    result = []
    
    for i in range(N):
      deq.rotate(-K + 1)
      result.append(deq.popleft())
    
    print('<',end="")
    print(*result,sep=', ',end="")
    print('>')
    Feedback
    出力条件に悩んだ.
    printの機能をもっと熟知すべきようです.