맛있는감귤

BOJ : 1158 조세퍼스 문제 본문

알고리즘/백준 알고리즘

BOJ : 1158 조세퍼스 문제

맛있는감귤 2017. 1. 15. 19:25
문제 : https://www.acmicpc.net/problem/1158

github : https://github.com/JEONG-SEUNGWOOK/BOJ/blob/master/1158.cpp


queue 두 개를 이용하여 한 쪽 queue에 있는 것을 다른 queue에 옮기며 해당 순번에 해당되는 사람은 push 하지 않고 출력 해준다.


다시 카운트 초기화하고 반대 queue에 옮기고 반복



#include <iostream>
#include <queue>
using namespace std;

int N, M;
queue<int> q1;
queue<int> q2;
int main(){
    cin>>N>>M;
    
    for(int i=1; i<=N; i++)
        q1.push(i);
    
    int cur=1;
    cout<<"<";
    
    while(!(q1.empty() && q2.empty())){
        while(!q1.empty()){
            if(cur!=M){
                q2.push(q1.front());
                q1.pop();
                cur++;
            }
            else{
                cout<<q1.front();
                q1.pop();
                cur=1;
                if(q1.empty() && q2.empty()) cout<<">";
                else cout<<", ";
            }
        }
        while(!q2.empty()){
            if(cur!=M){
                q1.push(q2.front());
                q2.pop();
                cur++;
            }
            else{
                cout<<q2.front();
                q2.pop();
                cur=1;
                if(q1.empty() && q2.empty()) cout<<">";
                else cout<<", ";
            }
        }
    }
}


'알고리즘 > 백준 알고리즘' 카테고리의 다른 글

BOJ : 1600 말이 되고픈 원숭이  (0) 2017.01.15
BOJ : 1389 케빈 베이컨의 6단계 법칙  (0) 2017.01.15
BOJ : 2276 암기왕  (0) 2017.01.12
BOJ : 1149 RGB거리  (0) 2017.01.12
BOJ : 1094 막대기  (0) 2017.01.12