알고리즘/Stack & Queue & Deck
[Queue] 백준 1158 - 요세푸스 문제
코딩균
2021. 2. 26. 11:16
생각하기
큐는 순환시 이용하는 자료구조
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]<<", ";
}
}
}