https://www.acmicpc.net/problem/11866
11866번: 요세푸스 문제 0
첫째 줄에 N과 K가 빈 칸을 사이에 두고 순서대로 주어진다. (1 ≤ K ≤ N ≤ 1,000)
www.acmicpc.net
큐 문제이다.
K번째에 나오는 수를 계속해서 버리면서 수열을 출력하는 것이다.
N=7, K=3일 때
이 과정을 코드로 구현하면 아래와 같다.
#include <iostream>
#include <queue>
using namespace std;
int N, K;
queue<int> myqueue;
int main() {
ios_base::sync_with_stdio(false);
cin.tie(NULL);
cout.tie(NULL);
cin >> N >> K;
for (int i = 1; i <= N; i++) {
myqueue.push(i);
}
int idx = 0;
cout << "<";
while (1) {
if (myqueue.empty())break;
for (int i = 1; i <= K; i++) {
int temp = myqueue.front();
myqueue.pop();
if (i == K) {
idx++;
cout << temp;
if (idx < N) {
cout << ", ";
}
}
else { myqueue.push(temp); }
}
}
cout << ">";
}
'백준' 카테고리의 다른 글
[1021] 회전하는 큐 (0) | 2023.01.30 |
---|---|
[1966] 프린터 큐 (0) | 2023.01.26 |
[1874] 스택 수열 (0) | 2023.01.19 |
[9012] 괄호 (0) | 2023.01.17 |
[10986] 나머지 합 (0) | 2023.01.16 |
댓글