이숭간 공부기록

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

알고리즘/백준

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

이숭간 2021. 2. 15. 00:48
728x90

www.acmicpc.net/problem/11866

 

11866번: 요세푸스 문제 0

첫째 줄에 N과 K가 빈 칸을 사이에 두고 순서대로 주어진다. (1 ≤ K ≤ N ≤ 1,000)

www.acmicpc.net

문제유형 : 큐 (자료구조)

문제풀이 :

  • 원 형태로 연결되어있는 자료구조를 큐로 구현하기
    • 내가 원하는 곳 (타겟지점) 으로 도달하기까지 거치는 것들은 큐에서 빼고 다시 큐에 넣어주는 형식으로 하면 원 형태의 자료구조를 큐로 구현할 수 있다.
    • ex ) 1,2,3,4,5,6,7에서 3을 타겟으로 할때 거치는 1,2,는 다시 뒤에 넣어줌으로써 3,4,5,6,7,1,2를 구현할 수 있다.

정답코드 :

import sys
input = sys.stdin.readline

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

from collections import deque
q = deque([i for i in range(1, n+1)])

print('<', end='')

while q: #큐가 빌때까지
    for i in range(k-1): #k번째 전 요소들을
        q.append(q[0]) #뒤에 추가하고
        q.popleft()  # 앞에서 없애기
    print(q.popleft(), end='')  #위의 반복문을 수행하면 큐의 맨앞에는 빠져나와야할 k번째 요소가잇음
    if q:
        print(",", end=' ')
print('>')