https://www.acmicpc.net/problem/11866
큐를 이용하는 문제
비슷한 문제 계속 풀다보니 감이 잡혀서 쉽게 풀었다.
먼저 큐에 1부터 n까지의 숫자를 저장해둔 후,
k-1번째 숫자까지 뒤로 push한 뒤 pop한다.
그런 뒤에 가장 앞에 오는 숫자가 k번째 숫자이므로 우리가 원하는 수열의 숫자가 된다.
따라서 따로 벡터나 배열에 옮겨담은 후 pop한다.
이 과정을 큐가 빌 때까지 반복
#include <iostream>
#include <queue>
int main()
{
std::queue<int> que;
std::vector<int> vec;
int n, k;
std::cin >> n >> k;
for (int i = 1; i <= n; ++i) que.push(i);
while (!que.empty())
{
int n = k;
while (--n)
{
que.push(que.front());
que.pop();
}
vec.push_back(que.front());
que.pop();
}
std::cout << "<";
for (int i = 0; i < vec.size()-1; ++i) std::cout << vec[i] << ", ";
std::cout << vec.back() << ">";
}
+) 실버3찍음
'Computer > 알고리즘&백준' 카테고리의 다른 글
[백준][C++] 1966 프린터 큐 (0) | 2022.12.07 |
---|---|
[백준][C++] 백준 시간 초과날 때 (0) | 2022.12.02 |
[백준][C++] 1874 스택 수열 (0) | 2022.11.29 |
[백준][C++] 4949 균형잡힌 세상 (0) | 2022.11.29 |
[백준][알고리즘][C++] 2750 수 정렬하기, 버블 정렬, 삽입 정렬 (0) | 2022.11.19 |