Algorithm/Problem Solve

[백준 11866번] 요세푸스 문제0

아네스 2020. 12. 13. 23:00
반응형

로직대로만 풀면 되는 문제.

#include <bits/stdc++.h>

using namespace std;

int N,K;
queue<int> q;
vector<int> v;

int main(void)
{
	ios::sync_with_stdio(false);
	cin.tie(NULL); cout.tie(NULL);
	
	cin >> N >> K;
    //최초 큐 세팅
	for (int i = 1; i <= N; i++)
	{
		q.push(i);
	}
	while(!q.empty())
	{
    	// K번 만큼 돌건데
		for (int i = K; i > 0; i--)
		{
			if (i == 1) // K번째 숫자는 출력되야 하므로
			{
				v.push_back(q.front()); // 나중에 출력할 vector에 추가.
				q.pop();
			}
			else { // 그 외의 연산은 앞에꺼 빼서 뒤로 넣어준다.
				q.push(q.front()); 
				q.pop();
			}
		}
	}
	
	for (int i = 0; i < v.size(); i++)
	{
		if (i == 0) cout << "<";
		if (i ==v.size() - 1) cout << v[i] << ">";
		else cout <<v[i]<< ", ";
	}


}
반응형