2023.04.20 풀이
import sys
input=sys.stdin.readline
from collections import deque
n,k=map(int, input().split())
queue=deque()
res=[]
for i in range(1, n+1):
queue.append(i)
while queue:
for i in range(k-1):
queue.append(queue.popleft())
res.append(queue.popleft())
print('<', end="")
print(', '.join(map(str,res)), end='')
print('>')
2024.10.12 풀이
import sys
input = sys.stdin.readline
n, k = map(int, input().split())
arr = [i for i in range(1, n+1)]
result = []
index = 0
while len(arr) > 0:
index = (index + k - 1) % len(arr)
result.append(arr.pop(index))
print("<", ", ".join(map(str, result)), ">", sep="")
다른 풀이
from collections import deque
n, k = map(int, input().split())
s = deque([])
for i in range(1, n + 1):
s.append(i)
print('<', end='')
while s:
for i in range(k - 1):
s.append(s[0])
s.popleft()
print(s.popleft(), end='')
if s:
print(', ', end='')
print('>')
from collections import deque
queue = deque()
answer = []
n, k = map(int, input().split())
for i in range(1, n+1):
queue.append(i)
while queue:
for i in range(k-1):
queue.append(queue.popleft())
answer.append(queue.popleft())
print("<",end='')
for i in range(len(answer)-1):
print("%d, "%answer[i], end='')
print(answer[-1], end='')
print(">")
import sys
N, K = map(int, sys.stdin.readline().split())
lst = [i for i in range(1, N+1)]
result = []
idx = 0
for _ in range(N):
idx = (idx + K - 1) % (len(lst))
result.append(lst[idx])
lst.pop(idx)
print('<', end='')
for i in range(N-1):
print(result[i], end=', ')
print(result[-1], end='')
print('>')
check poinnt
- 해당 번째 수가 되기 전까지 큐에서 왼쪽부터 뺀 후 오른쪽에 다시 삽입
해당 번째가 되면 뺀 후 print/리스트에 삽입
큐가 빌 때까지 반복
- 리스트 문자열로 ,랑 붙이는 법 : print(', '.join(map(str,res)))