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;
}
'Koala - 11기 > 코딩테스트 준비 스터디' 카테고리의 다른 글
[백준/Python] 2346번: 풍선 터뜨리기 (0) | 2023.08.13 |
---|---|
[백준/Java] 17298 오큰수 (0) | 2023.08.13 |
[백준 / Python] 26042 식당 입구 대기 줄 (0) | 2023.08.11 |
[백준/C++] 2075 N번째 큰 수 (0) | 2023.08.11 |
[백준/python] 17779 게리맨더링 2 (0) | 2023.08.10 |