https://www.acmicpc.net/problem/11866
N, K = map(int, input().split())
arr = list(range(1, N+1))
ans = []
i = K-1
while True:
ans.append(arr[i])
del arr[i]
i = (i+K-1) % len(arr)
if len(arr) == 1:
ans.append(arr[0])
break
print("<" + ", ".join(map(str, ans)) + ">")
ZeroDivisionError
가 발생했다.N = 1
인 모든 경우N = 1, K = 1
일 때, ZeroDivisionError
발생N = 1, K > 1
일 때, IndexError
발생N, K = map(int, input().split())
arr = list(range(1, N+1))
ans = []
i = K-1
if N == 1:
ans = [1]
else:
while True:
ans.append(arr[i])
del arr[i]
i = (i+K-1) % len(arr)
if len(arr) == 1:
ans.append(arr[0])
break
print("<" + ", ".join(map(str, ans)) + ">")
N = 1
인 경우를 예외처리했다.deque
, 개랄발랄님 풀이)
from collections import deque
N, K = map(int, input().split())
queue = deque(range(1, N+1))
ysps = []
while queue:
for _ in range(K-1):
queue.append(queue.popleft())
ysps.append(queue.popleft())
print("<" + ", ".join(map(str, ysps)) + ">")
deque
을 사용했다. 천재적!deque
을 사용하려 했다가 너무 복잡해져서 그만뒀는데, 이렇게도 할 수 있구나.deque
은 신이다.deque
을 쓰자.