백준/기타
11866번: 요세푸스 문제 0 [C++]
Koalitsiya
2023. 4. 6. 16:42
문제
풀이
특정 집단에서 k번째 인원을 아무도 남지 않을 때까지 반복해서 제거하고 이 제거되는 순서대로 해당 인원의 번호를 출력하면 된다. 이 문제는 큐를 통해 쉽게 해결할 수 있다.
#include <iostream>
#include <queue>
using namespace std;
int main() {
int n, k;
queue<int> q;
cin >> n >> k;
for (int i = 1; i <= n; i++)
q.push(i);
cout << "<";
while (q.size() > 0) {
for (int i = 0; i < k - 1; i++) {
q.push(q.front());
q.pop();
}
if (q.size() > 1) cout << q.front() << ", ";
else cout << q.front() << ">";
q.pop();
}
return 0;
}