본문 바로가기
개발 노트/백준, 프로그래머스 풀이

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

by tokkiC 2022. 7. 14.

큐를 사용해서 k-1번만큼 front를 push하고 front를 pop 돌린 후

맨 앞의 수를 출력 후 pop한다

이것을 큐가 빌때까지 반복하면 끝인 문제!

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

 

11866번: 요세푸스 문제 0

첫째 줄에 N과 K가 빈 칸을 사이에 두고 순서대로 주어진다. (1 ≤ K ≤ N ≤ 1,000)

www.acmicpc.net

#include <bits/stdc++.h>
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) {
		if(q.size() != 1) 
		{
			for(int i = 0; i < k - 1; i++)
			{
				q.push(q.front());
				q.pop();
			}
			cout << q.front() << ", ";
		 }
		 else
		 {
		 	for(int i = 0; i < k - 1; i++)
			{
				q.push(q.front());
				q.pop();
			}
			cout << q.front();
		 } 
		q.pop();
	}
	cout << ">" << "\n";
	
	return 0;
}

댓글