문제

 

 

풀이

 특정 집단에서 k번째 인원을 아무도 남지 않을 때까지 반복해서 제거하고 이 제거되는 순서대로 해당 인원의 번호를 출력하면 된다. 이 문제는 큐를 통해 쉽게 해결할 수 있다.

#include <iostream>
#include <queue>

using namespace std;

int main() {
	int n, k;
	queue<int> q;

	cin >> n >> k;

	for (int i = 1; i <= n; i++)
		q.push(i);

	cout << "<";

	while (q.size() > 0) {
		for (int i = 0; i < k - 1; i++) {
			q.push(q.front());
			q.pop();
		}

		if (q.size() > 1) cout << q.front() << ", ";
		else cout << q.front() << ">";
		q.pop();
	}

	return 0;
}

'백준 > 기타' 카테고리의 다른 글

2164번: 카드2 [C++]  (0) 2023.04.10
1920번: 수 찾기 [C++]  (0) 2023.04.10
7568번: 덩치 [C++]  (0) 2023.04.06
11050번: 이항 계수 1 [C++]  (0) 2023.04.06
2775번: 부녀회장이 될테야 [C++]  (0) 2023.04.06

+ Recent posts