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;
}

 

+ Recent posts