[ ALGORITHM ]/[ 백 준 ]

[BAEKJOON] 11866번 요세푸스 문제 0

HiStar__ 2020. 7. 27. 13:39

문 제

 

소 스  코 드

#include <iostream>
#include <queue>
#include <vector>

int main() {
	std::queue<int> que;
	std::vector<int> seq;

	int N, K;
	std::cin >> N >> K;
	for (int i = 0; i < N; ++i) que.push(i + 1);
	seq.reserve(N);

	int n{ 1 };
	while (!que.empty()) {
		if (K - 1 < n) {
			seq.emplace_back(static_cast<int>(que.front()));
			que.pop();
			n = 1;
		}
		else {
			que.push(que.front());
			que.pop();
			++n;
		}
	}

	std::cout << "<";
	for (int i = 0; i < seq.size(); ++i) {
		if (i == (seq.size() - 1)) {
			std::cout << seq[i] << ">";
		}
		else {
			std::cout << seq[i] << ", ";
		}

	}

	return 0;
}

 

풀 이

 

  • Queue를 통한 간단한 구현

  • K - 1 번째 반복되는 값을 vector에 저장하고, 그 외의 값을 다시 Queue의 뒤의 값으로 추가.
    큐가 Empty()가 될 때 까지 반복해야 한다.

 

출 력 값

 

 

문 제  출 처

문제 링크 : [ BAEKJOON ] : https://www.acmicpc.net/problem/11866

 

11866번: 요세푸스 문제 0

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

www.acmicpc.net

 

'[ ALGORITHM ] > [ 백 준 ]' 카테고리의 다른 글

[BAEKJOON] 10866번 : 덱  (0) 2020.07.29
[BAEKJOON] 1966번 : 프린터 큐  (0) 2020.07.28
[BAEKJOON] 2164번 카드 2  (0) 2020.07.26
[BAEKJOON] 18258번 큐 2  (0) 2020.07.25
[BAEKJOON] 1874번 스택 수열  (0) 2020.07.24