JiSoo's Devlog

[백준 / 파이썬] 11866번 요세푸스 문제0 본문

코테준비

[백준 / 파이썬] 11866번 요세푸스 문제0

지숭숭숭 2024. 1. 10. 16:40

from collections import deque

n, k = map(int, input().split())
a = deque()

for i in range(n):
    a.append(i)

l = []
print("<", end='')

while(a):
    for i in range(k-1):
        a.append(a.popleft())
    print(a.popleft(), end='')
    if a:
        print(", ",end='')
print(">")

 

3번 제거하고 그 다음은 4부터 3번째 제거

 

큐 자료구조

k번째 완전히 제거되고 k-1번째까지의 숫자들은 제거된 후 다시 큐의 뒤로 돌아온다

deque 사용

deque는 앞뒤로 요소를 추가하고 삭제할 수 있는 자료구조

 

rotate()를 사용하면 오른쪽으로 이동

ex)

rotate(1) 하면 제일 뒤에 있던게 제일 앞으로 이동

rotate(-1) 하면 제일 앞에 있던게 제일 뒤으로 이동

 

popleft()는 제일 앞의 요소 제거 후 반환

 

3 제거하고 4 5 6 7 1 2 

6 제거하고 7 1 2 4 5 

2 제거하고 4 5 7 1

7 제거하고 1 4 5

5 제거하고 1 4

1 제거하고 4

4 제거

 

 

 

728x90