본문 바로가기
알고리즘/Stack & Queue & Deck

[Queue] 백준 1158 - 요세푸스 문제

by 코딩균 2021. 2. 26.

 

 

생각하기

큐는 순환시 이용하는 자료구조

1부터 N까지 큐에 넣는다

(큐가 빌 때까지)

   K번째 숫자라면 pop하고 아니면 pop 시킨후 다시 push 시킨다

#include <iostream>
#include <vector>
#include <map>
#include <stack>
#include <queue>
#include <string>
#include <algorithm>
using namespace std;
#define endl '\n'
#define MAX 1000000

int N, K;
int alpha[26];

int main()
{
    ios_base::sync_with_stdio(0);
    cin.tie(0), cout.tie(0);

    cin>>N>>K;

    queue<int> q;
    vector<int> ans;

    for(int i=1; i<=N; i++){
        q.push(i);
    }

    int count = 0;
    while(!q.empty()){
        count++;
        if(count == K){
            ans.push_back(q.front());
            q.pop();
            count = 0;
        }
        else{
            q.push(q.front());
            q.pop();
        }
    }
    cout<<'<';
    for(int i=0; i<N; i++){
        if(i==N-1){
            cout<<ans[i]<<'>'<<endl;
        }
        else{
            cout<<ans[i]<<", ";
        }
        
    }

}