알고리즘 👩🏻💻/백준
[BAEKJOON] 1158 | 요세푸스 문제
flowing1ife
2024. 11. 14. 00:33
🔎 1158 | 요세푸스 문제
https://www.acmicpc.net/problem/1158
💡 Solution
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='>')
▶ 📌 Note
∙ print 형식에 주의해야한다. 마지막 원소는 '>'로 마무리 해줘야 하기에 따로 처리하였다.