내 풀이
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
시간 걸렸다.
- 무식한 방법이지만 시간제한이 2초라 넉넉해서 그렇게 시도했다.
- 색다른 시도에서는 원형을 그대로 사용하기 위해서 index에 신경을 썼다.
- 기본적으로
(i+k)
번째를 불러오면 되지만, 전체 길이를 넘치게 되면전체 길이로 나눈 나머지
번째를 불러오면 된다.
- 기본적으로
참고!
(n,k)=(7,3)일 때의 처리 과정
1234567
2345671
3456712
3컷
456712
567124
671245
6컷
71245
12457
24571
2컷
4571
5714
7145
7컷
145
451
514
5컷
14
41
14
1컷
4
4컷