[BOJ] 11866 요세푸스 문제 0

자료구조, 큐


해당 문제는 queue의 성질을 이용해 원형 링크드리스트를 간편하게 구현할 수 있는 문제이다. K번째까지 popleft와 append를 반복하며 맨 앞에 있는 수를 맨 뒤로 움직이는 방식을 통해 구현하면 된다.

import sys
from collections import deque

def solution(n, k):
    # 초기 설정
    q = deque()
    for i in range(1, n+1):
        q.append(i)

    answer = '<'
    # 원형 리스트를 돌며 popleft, append
    while q:
        # k - 1 번 popleft -> append
        for _ in range(k-1):
            now = q.popleft()
            q.append(now)
        
        # k 번째 popleft 후 출력
        now = q.popleft()
        answer += str(now) + ', '

    print(answer[:len(answer)-2] + ">")
    

if __name__ == "__main__":
    N, K = map(int, sys.stdin.readline().rstrip().split())
    solution(N, K)

태그:

카테고리:

업데이트: