백준 1158 c++

magicdrill·2024년 2월 26일
0

백준 문제풀이

목록 보기
31/655

백준 1158 c++

#include <iostream>
#include <queue>

using namespace std;

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 josephus(int N, int K)
{
	queue <int> circle;
	int i, j, size, temp;

	//원형 큐 초기화
	for (i = 1; i <= N; i++)
	{
		circle.push(i);
	}
	size = circle.size();
	cout << '<';
	for (j = 1; j < size; j++)
	{
		for (i = 1; i < K; i++)
		{
			temp = circle.front();
			circle.pop();
			circle.push(temp);
		}
		cout << circle.front() << ", ";
		circle.pop();
	}
	cout << circle.front();
	cout << '>';
	circle.pop();

	return;
}

int main(void)
{
	ios_base::sync_with_stdio(false);
	cin.tie(NULL);
	cout.tie(NULL);

	int N, K;

	N = input(1, 5000);
	K = input(1, N);

	josephus(N, K);

	return 0;
}

0개의 댓글