본문 바로가기

백준/C++

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

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

'백준 > C++' 카테고리의 다른 글

[C++] 백준 2346번 - 풍선 터뜨리기  (0) 2024.06.22
[C++] 백준 28279번 - 덱 2  (1) 2024.06.21
[C++] 백준 2164번 - 카드 2  (0) 2024.06.19
[C++] 백준 18258번 - 큐 2  (1) 2024.06.17
[C++] 백준 12789번 - 도키도키 간식드리미  (0) 2024.06.17