[백준 11866] 요세푸스 문제 0

Junyoung Park·2022년 2월 25일
0

코딩테스트

목록 보기
85/631
post-thumbnail

1. 문제 설명

요세푸스 문제 0

2. 문제 분석

n명 중 k번째 사람을 순서대로 팝한다. 이때 k번째 사람을 구하기 위해 그 앞의 사람들을 맨 뒤로 넣는다. 리스트가 아니라 디큐로 구현할 때 시간 효율을 높일 수 있다.

3. 나의 풀이

from collections import deque

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

for i in range(1, n+1):
    queue.append(i)
    # 주어진 번호를 삽입

print('<', end='')
while len(queue) != 1:
    for _ in range(k-1):
        head = queue.popleft()
        queue.append(head)
        # 현재 큐 내의 k번째 사람을 타케팅하기 위해 그 앞의 사람들을 뒤로 보낸다.
    print(f"{queue.popleft()},", end=' ')
    # k번째 사람이므로 선택

print(f"{queue.popleft()}>")
# 출력 형태를 맞추기 위해 queue에 1명 남을 때까지 while 루프. 
profile
JUST DO IT

0개의 댓글