본문 바로가기
백준/C++

백준 11866번 : 요세푸스 문제 0 [C++]

by 대니스 2022. 8. 10.

주소 : https://www.acmicpc.net/problem/11866

 

11866번: 요세푸스 문제 0

첫째 줄에 N과 K가 빈 칸을 사이에 두고 순서대로 주어진다. (1 ≤ K ≤ N ≤ 1,000)

www.acmicpc.net

소스 코드 :

#include <iostream>
#include <queue>
using namespace std;

int main()
{
	int N, K;
	queue<int> q;
	cin >> N >> K;

	for (int i = 1; N >= i; i++) {
		q.push(i);
	}

	cout << "<";
	while (!q.empty()) {
		for (int i = 0; i < K - 1; i++) {
			q.push(q.front());
			q.pop();
		}

		cout << q.front();
		q.pop();

		if (!q.empty()) {
			cout << ", ";
		}

	}
	cout << ">" << endl;

	return 0;
}

마무리 : 이 문제에서 N명의 사람이 원을 이루면서 앉아있고, K번째 사람을 제거하면서 출력하는 문제로 원형 큐를 사용해야한다는 것을 알 수 있다. 그래서 stl를 이용하여 큐를 사용하고 push, pop을 하면서 특정 자리 숫자 번째에 숫자를 뺀다.