문 제
소 스 코 드
#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 |