백준 11866 c++
#include <iostream>
#include <queue>
using namespace std;
int input(int lower, int upper);
void check_exit_order_by_Josephus_permutation(int N, int K, queue <int>& exit_order);
void print_result(queue <int> exit_order);
int main(void)
{
ios_base::sync_with_stdio(false);
cin.tie(NULL);
cout.tie(NULL);
int K, N;
queue <int> exit_order;
N = input(1, 1000);
K = input(1, N);
check_exit_order_by_Josephus_permutation(N, K, exit_order);
print_result(exit_order);
return 0;
}
int input(int lower, int upper)
{
//cout << "input" << endl;
int A;
while (1)
{
cin >> A;
if (A >= lower && A <= upper)
{
break;
}
else
{
;
}
}
return A;
}
void check_exit_order_by_Josephus_permutation(int N, int K, queue <int> &exit_order)
{
//cout << "check_exit_order_by_Josephus_permutation" << endl;
int i;
queue <int> round_table;
for (i = 1; i <= N; i++)//테이블에 앉히기
{
round_table.push(i);
}
while (!round_table.empty())
{
for (i = 0; i < K - 1; i++)
{
round_table.push(round_table.front());
round_table.pop();
}
exit_order.push(round_table.front());
round_table.pop();
}
return;
}
void print_result(queue <int> exit_order)
{
//cout << "print_result" << endl;
int i;
int size = exit_order.size();
cout << "<";
for (i = 0; i < size - 1; i++)
{
cout << exit_order.front() << ", ";
exit_order.pop();
}
cout << exit_order.front() << ">\n";
exit_order.pop();
return;
}