[c++/백준] 11866 요세푸스 문제 0

이소진·2021년 6월 26일
0

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

📝문제 포인트

큐를 사용하는 문제
순서대로 K번째 사람을 제거하고 N명의 사람들이 모두 제거될 때까지 진행해야함.
출력양식이 < 3, ~, >인것에 주의해서 마지막 숫자를 출력할 때는 다르게 조건을 넣어줘야함.

📌코드

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

int main() {
	int n, k;
	cin >> n >> k;
	queue<int> q;
	string result = "<";
	for (int i = 1; i <= n; i++) {
		q.push(i);
	}
	
	while (!q.empty()) {
		if (q.size() == 1) {
			result += to_string(q.front()) + ">";
			q.pop();
			break;
		}
		int before;
		for (int i = 1; i <= k; i++) {
			before = q.front();
			q.pop();
			if(i!=k) q.push(before);
		}
		result += to_string(before) + ", ";
	}

	cout << result;
	return 0;
}
profile
webFront / Flutter / iOS 😉

0개의 댓글