티스토리 뷰

algorithm/problem solving

BOJ 11866 요세푸스 문제 0

무니웜테일패드풋프롱스 2020. 3. 22. 11:30

 

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

int main(void) {
	queue <int>q;
	int n, k;
	cin >> n;
	cin >> k;
	int tmp[1000] = { 0, };
	int seq[1000] = { 0, };
	int index = 0;
	for (int i = 1; i <= n; i++)
		q.push(i);

	while (!q.empty()) {

		for (int i = 0; i < k; i++) {
			tmp[i] = q.front();
			q.pop();
			if (i != k - 1) {
				q.push(tmp[i]);
			}
		}
		seq[index++] = tmp[k-1];
	}
	
	cout << "<";
	for (int i = 0; i < n; i++) {
		if (i != n - 1) {
			cout << seq[i] << ", ";
		}
		else cout << seq[i];
	}
	cout << ">";
}

 

큐를 사용하는 문제.

k번째에 있는 요소를 빼내서 수열을 만들기 위해서는, 

1) 주어진 수 (1~N) 큐에 넣는다

2) q가 empty 될 때까지 k-1번 큐에 pop, push 반복 -> k번째 pop된 요소를 수열에 저장

 

 

'algorithm > problem solving' 카테고리의 다른 글

BOJ 11047 동전0  (0) 2020.04.04
BOJ 2839 설탕배달  (0) 2020.03.31
B0J 1874 스택수열  (0) 2020.03.18
BOJ 9020 골드바흐의 추측  (0) 2020.03.12
에라토스테네스의 체와 백준 1929 소수구하기  (0) 2020.03.11
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/12   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
글 보관함