백준/C++

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

꿩꿩 2024. 6. 21. 00:38
728x90

 

문제 11866번

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

 

큐에 1부터 n까지의 수를 넣고 k번째가 되기 전인 k-1까지 반복하여 숫자를 뒤로 넣고 앞 숫자는 버려준다. k번째가 되면 해당 값을 출력해주고 만약 그 수가 마지막 수라면 ,를 출력해준다. 그리고 마지막에 pop을 통해 출력한 숫자를 버려준다.

 

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

int main() {
	int n, k;
	cin >> n >> k;
	queue <int> q;
	for (int i = 1; i <= n; i++) {
		q.push(i);
	}
	cout << "<";
	while (q.size() > 0) {
		for (int i = 0; i < k - 1; i++) {	//k번째 되기 전까지
			q.push(q.front());
			q.pop();
		}
		cout << q.front();	//k번째
		if (q.size() != 1) {	//큐에 하나만 들어있는 것이 아니라면
			cout << ", ";
		}
		q.pop();
	}
	cout << ">";

	return 0;
}

 

 

 

 

728x90