문제
나의 풀이
N, K = map(int, input().split())
data_list = [i for i in range(1, N+1)]
rlt = []
count = 0
where = (K - 1)
for i in range(N):
if len(data_list) > where:
rlt.append(data_list.pop(where))
where += (K - 1)
else:
where = where%len(data_list) # 이 부분이 핵심!
rlt.append(data_list.pop(where))
where += K-1
print("<", end='')
for i in range(0,(len(rlt)-1)):
print(rlt[i], end=', ')
print(rlt[-1], end=">")
남의 풀이
#입력
N, K = map(int, input().split())
josephus = [i for i in range(1, N + 1)]
result = []
temp = K - 1
for i in range(N):
if len(josephus) > temp: #위치가 리스트를 넘지 않은 경우
result.append(josephus.pop(temp)) #답 추가
temp += K - 1 #다음 위치로 이동
elif len(josephus) <= temp: #위치가 리스트를 넘은 경우
temp = temp % len(josephus)
result.append(josephus.pop(temp))
temp += K - 1
#출력
print("<", end='')
for i in result:
if i == result[-1]:
print(i, end = '')
else:
print("%s, " %(i), end='')
print(">")