본문 바로가기

Algorithm/BAEKJOON

[BOJ] 11866번 요세푸스 문제 0 (C++)

728x90
반응형

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

 

11866번: 요세푸스 문제 0

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

www.acmicpc.net

 

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

int main() {
	ios::sync_with_stdio(false);
	cin.tie(NULL);
	
	int n, k;
	cin >> n >> k;
	
	queue<int> q;
	for(int i = 1; i <= n; i++){
		q.push(i);
	}
	
	cout << "<";
	
	while(true){
		if(q.empty()) break;
		for(int i = 1; i <= k; i++){
			if(i != k){
				int t = q.front();
				q.pop();
				q.push(t);
			}
			else{
				cout << q.front();
				q.pop();
				if(!q.empty()) cout << ", ";
			}
		}
	}
	cout << ">";
	
	return 0;
}

원형 큐 문제이다. 

 

1. N, K를 받음

2. 1~N을 queue에 담고

3. 큐가 빌 때까지 while문을 돌며

   for i = 1~k 하면서

   만약 i가 k가 아니라면,

      queue의 맨 첫 요소를 빼고 다시 넣는다.

   만약 i가 k라면,

      queue의 맨 첫 요소를 빼고 출력한다.

728x90
반응형

'Algorithm > BAEKJOON' 카테고리의 다른 글

[BOJ] 1181번 단어 정렬 (C++)  (0) 2021.12.26
[BOJ] 9012번 괄호 (C++)  (0) 2021.12.25
[BOJ] 2623번 음악프로그램 (C++)  (0) 2021.12.24
[BOJ] 11724번 연결 요소의 개수 (C++)  (0) 2021.12.24
[BOJ] 1766번 문제집 (C++)  (0) 2021.12.24