알고리즘 👩🏻‍💻/백준

[BAEKJOON] 1158 | 요세푸스 문제

flowing1ife 2024. 11. 14. 00:33

🔎 1158 | 요세푸스 문제

https://www.acmicpc.net/problem/1158


💡 Solution

Callout Box
✍🏻
Logic
1. 먼저 해당 수 만큼을 queue에 넣어준다
2. k-1번까지는 queue의 앞의 수를 꺼내서 queue의 뒤에 줄을 다시 세워준다.
3. k번째에 해당하는 queue의 앞의 수는 print 하고 pop해준다.
4. 위의 과정을 queue가 빌 때까지 반복한다.
n, k = map(int, input().split())

queue = [i for i in range(1, n+1)]

num = 1
print('<', end='')
while len(queue) > 1 :
    if num == k :
        print(queue.pop(0), end=', ')
        num = 1
    else :
        queue.append(queue.pop(0))
        num += 1
print(queue.pop(0), end='>')

Toggle Example
▶ 📌 Note
∙ print 형식에 주의해야한다. 마지막 원소는 '>'로 마무리 해줘야 하기에 따로 처리하였다.