
n,k = map(int,input().split())
aa = [i for i in range(1,n+1)]
k -= 1
cnt = k
ans = "<"
while True:
ans += str(aa.pop(cnt)) + ", "
cnt += k
if len(aa) == 0:
break
if cnt >= len(aa):
cnt %= len(aa)
print(ans[:-2] + ">")
배열에서 삭제되는 인덱스는 k-1의 배수가 된다.
인덱스가 배열의 길이와 같거나 더 커지면 인덱스 % 배열의 길이로 나머지를 구해주어 다시 삭제 될 인덱스를 구해주었다.
정석 풀이는 이렇게 풀어야 하는 것 같다.
from collections import deque
n,k = map(int,input().split())
qq = deque([i for i in range(1,n+1)])
answer = []
while qq:
for i in range(k-1):
qq.append(qq.popleft())
answer.append(qq.popleft())
print("<", end="")
print(", ".join(map(str, answer)), end="")
print(">")
k-1번만큼 popleft해주고 다시 append로 큐의 맨 뒤에 삽입을 반복하면 삭제해야 할 숫자가 큐의 0번째 인덱스로 옴
다시 popleft해주고 answer에 넣어 줌
| [파이썬/python] 백준 1021번 : 회전하는 큐 (🥈3) (0) | 2023.05.31 |
|---|---|
| [파이썬/python] 백준 1966번 : 프린터 큐 (🥈3) (0) | 2023.05.31 |
| [파이썬/python] 백준 2164번 : 카드2(🥈4) (0) | 2023.05.30 |
| [파이썬/python] 백준 18258번 : 큐 2(🥈4) (0) | 2023.05.30 |
| [파이썬/python] 백준 1874번 : 스택 수열(🥈2) (0) | 2023.05.30 |