Koala - 11기/코딩테스트 준비 스터디
[백준/C++] 11866번: 요세푸스 문제 0
나는 푸딩
2023. 8. 12. 15:39
Problem
Solution
N과 K를 입력받고 1부터 N까지의 숫자를 큐에 순서대로 넣는다. 큐가 빌 때까지 다음 과정을 반복한다. (먼저 현재 큐의 맨 앞에 있는 숫자를 K-1번 큐의 맨 뒤로 보낸다. 그 다음 큐의 맨앞에 있는 숫자를 출력하고 제거한다. 그리고 큐가 비어있지 않으면 쉼표와 공백을 출력한다.) 마지막으로 요세푸스 순열을 출력한다.
Answer
#include <iostream>
#include <queue>
using namespace std;
int main() {
int N, K;
cin >> N >> K;
queue<int> q;
for (int i = 1; i <= N; ++i) {
q.push(i);
}
cout << "<";
while (!q.empty()) {
for (int i = 0; i < K - 1; ++i) {
q.push(q.front());
q.pop();
}
cout << q.front();
q.pop();
if (!q.empty()) {
cout << ", ";
}
}
cout << ">";
return 0;
}