P11866. 요세푸스 문제 0

wnajsldkf·2023년 4월 18일
0

Algorithm

목록 보기
48/58
post-thumbnail

설명

인덱스로 접근하다보면 범위 밖을 넘어갔을 때 따로 처리해야하는 불편함이 있다. 또 크기가 변경되면 인덱스도 변경된다.
이 문제는 deque 성질을 이용해서 앞 원소를 뒤고 보내고, K번째마다 제거한다.

코드

from sys import stdin as s
from collections import deque

n, k = map(int, s.readline().split())

result = deque([_+1 for _ in range(n)])

print('<', end='')

while result:
    for i in range(k-1):
    	# k-1번만큼 첫번째 원소를 가장 뒤로 보낸다.
        result.append(result[0])
        # 뒤로 보낸 첫번째 원소는 제거한다.
        result.popleft()
	# k번째마다 제거하면서 출력한다.        
    print(result.popleft(), end='')
    if result:
        print(', ', end='')
print('>')
profile
https://mywnajsldkf.tistory.com -> 이사 중

0개의 댓글