https://www.acmicpc.net/problem/11866
queue 자료형와 1부터 시작하는 cnt라는 횟수를 세는 변수를 통해
만약 cnt가 k보다 작다면 queue의 front에서 제일 뒤로 push 해준다음 pop하면서 cnt를 1늘려준다.
만약 cnt가 k가 된다면 그 값을 vector에 삽입하고 cnt를 1로 초기화해준다.
이과정을 vector의 크기가 n이 될 때까지 반복해주고 그 vector를 출력형식에 맞게 출력해주면 된다.
정답코드(queue사용)
#include <iostream>
#include <queue>
#include <vector>
using namespace std;
vector<int> v;
queue<int> q;
int main()
{
int n, k, cnt = 1;
cin >> n >> k;
for (int i = 1; i <= n; i++) //큐 초기화
{
q.push(i);
}
while (v.size() != n)
{
if (cnt < k)
{
cnt++;
q.push(q.front());
q.pop();
}
else
{
v.push_back(q.front());
q.pop();
cnt = 1;
}
}
cout << "<";
for (int i = 0; i < n; i++)
{
if (i < n - 1)
{
cout << v[i] << ", ";
}
else
{
cout << v[i] << ">" << endl;
}
}
return 0;
}
'코딩테스트 > 백준' 카테고리의 다른 글
[백준][C++]2346번. 풍선 터뜨리기 (0) | 2024.10.07 |
---|---|
[백준][C++]28279번. 덱 2 (0) | 2024.10.04 |
[백준][C++]2164번. 카드2 (1) | 2024.10.03 |
[백준][C++]12789번. 도키도키 산식드리미 (0) | 2024.10.03 |
[백준][C++]4949번. 균형잡힌 세상 (2) | 2024.10.02 |