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)
'프로그래밍 & 알고리즘 & IT > 알고리즘(python)' 카테고리의 다른 글
[백준 구현 문제 10871] X보다 작은 수 (0) | 2023.06.08 |
---|---|
[백준 시뮬레이션 문제 14503] 로봇 청소기 (0) | 2023.06.08 |
[백준 구현문제 10773] 제로 (0) | 2023.06.06 |
[백준 시뮬레이션 문제 1966] 프린터 큐 (0) | 2023.06.05 |
[나동빈 코딩테스트] 구현 문제(게임 개발) (2) | 2023.05.30 |