백준 algorithm
백준 1158 - 요세푸스 문제
cosmohoo
2020. 2. 26. 00:34
반응형
queue를 사용하여 풀 수 있다.
원하는 n번째가 나올때까지 pop, push를 이어가다 원하는 숫자가 나오면 프린트하고 pop을 하는 방식을 취하면 된다.
본인은 해당하는 값들을 vector에 넣어 print하였다.
#include <iostream>
#include <queue>
#include <vector>
using namespace std;
int main()
{
ios_base::sync_with_stdio(false);
cin.tie(nullptr);
cout.tie(nullptr);
int N, K;
cin >> N>>K;
queue<int> jose;
vector<int> answer;
for(int i=1;i<=N;++i)
{
jose.push(i);
}
while(!jose.empty())
{
for(int i=0; i<K-1; ++i)
{
jose.push(jose.front());
jose.pop();
}
answer.push_back(jose.front());
jose.pop();
}
cout<<"<";
int i;
for(i=0; i<answer.size()-1; ++i)
{
cout<<answer[i]<<", ";
}
cout<<answer[i]<<">\n";
return 0;
}
반응형