프로그래밍 & 알고리즘 & IT/알고리즘(python)

[백준 구현 문제 11866] 요세푸스 문제 0

라니체 2023. 5. 31. 22:44
728x90

# 백준 11866번 문제 - 요세푸스 문제 0

# 난이도 : 중

N, K = map(int,input().split())

num_array = [i for i in range(1,N+1,1)]
del_idx = 0  #지워야할 array의 index

mark_li = []
while len(num_array) > 0 :  #array가 모두 지워질때 까지 반복
  del_idx = (del_idx + (K-1)) % len(num_array)  # 첫번째 지울때는 K번째 숫자 지움. 그 이후부터는 그 index 기준으로 (K-1)씩 shift 하면서 지움. 순환이 있으므로 그 당시의 array의 길이로 나눈 나머지를 이용.


  mark_li.append(str(num_array[del_idx]))  #지우기 전에 숫자 저장.
  del num_array[del_idx]


print("<"+", ".join(mark_li)+">")  #최종 출력물의 형태는 반드시 예제와 같아야 통과됨.

#시간 복잡도 O(N)