Week 01 ~ 04 : 알고리즘 문제 풀이

파이썬 백준 11866 요세푸스 문제 0

정글러 2021. 11. 15. 23:24
n, k = map(int, input().split())
print('<', end = '')
que = [x+1 for x in range(n)]
point = 0
count = 0
stack = 0
while stack < n :
    count = count + 1
    if count == k :
        print(que[point], end = '')
        count = 0
        stack = stack + 1
        if stack != n :
            print(', ', end = '')
    else :
        que.append(que[point])
    point = point + 1
print('>')

머리를 꼬리에 다시 넣는 큐를 구현하되 3번에 한번씩은 다시 넣지 않고 프린트한다.

머리를 del하면 시간을 많이 잡아먹으니 point를 써서 불용처리만 한다.

출력횟수를 카운트해서 n이 되면 끝