Little Jay

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

알고리즘/BOJ

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

Jay, Lee 2021. 4. 4. 20:27

처음에 벡터로 풀었다가

알고리즘 분류쪽에 '큐'라고 나와있어서

다시 푼 문제

 

간단하게 앞에거 거를 k-1만큼 뒤로 붙이면서 pop 시켜버리면

맨 앞에 것이 k번째 수가 되니까

그거만 pop하는 과정을 반복하면 된다.

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

int main() {

	cin.tie(0);
	cout.tie(0);
	ios::sync_with_stdio(false);

	int n, k;
	queue<int> q;
	cin >> n >> k;

	for (int i = 1; i <= n; 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 << ">" << "\n";


	return 0;
}

'알고리즘 > BOJ' 카테고리의 다른 글

[C++] 백준 2798번 블랙잭  (0) 2021.04.05
[C++] 백준 2164번 카드2  (0) 2021.04.04
[C++] 백준 2869번 달팽이는 올라가고 싶다  (0) 2021.04.04
[C++] 백준 11651번 좌표 정렬하기2  (0) 2021.04.02
[C++] 백준 10866번 덱  (0) 2021.03.29
Comments