백준 11866번 - 요세푸스 문제 0
백준 11886번 바로가기 내 풀이 n, k = map(int, input().split()) arr = [i+1 for i in range(n)] ans = [] while len(arr) > 1: for _ in range(k-1): arr = arr[1:] + [arr[0]] ans.append(arr.pop(0)) ans.append(arr.pop()) print('<', end='') print(*ans, sep=', ', end='') print('>') 색다른 시도 원형을 그대로 사용해볼까? 좋은 생각이야! ^_^ n, k = map(int, input().split()) arr = [i+1 for i in range(n)] ans = [] i = 0 while len(arr) > 0: i = (i+k-1) % len(arr) ans.append(arr.pop(i)) print('<', end='') print(*ans, sep=', ', end='') print('>') CODE REVIEW 원형으로 되어있는 문제가 복잡하길래, 선형으로 변환하여 풀어내었다. 무식한 방법이지만 시간제한이 2초라 넉넉해서 그렇게 시도했다. 1008ms시간 걸렸다. 색다른 시도에서는 원형을 그대로 사용하기 위해서 index에 신경을 썼다. 기본적으로 (i+k)번째를 불러오면 되지만, 전체 길이를 넘치게 되면 전체 길이로 나눈 나머지번째를 불러오면 된다. ...