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

반응형