티스토리 뷰
#include <iostream>
#include <queue>
using namespace std;
int main(void) {
queue <int>q;
int n, k;
cin >> n;
cin >> k;
int tmp[1000] = { 0, };
int seq[1000] = { 0, };
int index = 0;
for (int i = 1; i <= n; i++)
q.push(i);
while (!q.empty()) {
for (int i = 0; i < k; i++) {
tmp[i] = q.front();
q.pop();
if (i != k - 1) {
q.push(tmp[i]);
}
}
seq[index++] = tmp[k-1];
}
cout << "<";
for (int i = 0; i < n; i++) {
if (i != n - 1) {
cout << seq[i] << ", ";
}
else cout << seq[i];
}
cout << ">";
}
큐를 사용하는 문제.
k번째에 있는 요소를 빼내서 수열을 만들기 위해서는,
1) 주어진 수 (1~N) 큐에 넣는다
2) q가 empty 될 때까지 k-1번 큐에 pop, push 반복 -> k번째 pop된 요소를 수열에 저장
'algorithm > problem solving' 카테고리의 다른 글
BOJ 11047 동전0 (0) | 2020.04.04 |
---|---|
BOJ 2839 설탕배달 (0) | 2020.03.31 |
B0J 1874 스택수열 (0) | 2020.03.18 |
BOJ 9020 골드바흐의 추측 (0) | 2020.03.12 |
에라토스테네스의 체와 백준 1929 소수구하기 (0) | 2020.03.11 |
댓글