[BOJ]1158 요세푸스

강동현·2023년 12월 8일

코딩테스트

목록 보기
3/111
  • sol1: queue를 활용해 원형 큐를 제작한 풀이
#include <bits/stdc++.h>
using namespace std;
int main(){
    int N, K;
    cin >> N >> K;
    queue<int> q;
    for(int i = 1; i <= N; ++i){
        q.push(i);
    }
    cout << '<';
    while(!q.empty()){
        for(int i = 0; i < K - 1; ++i){
            q.push(q.front());
            q.pop();
        }
        cout << q.front();
        q.pop();
        if(q.size()) cout << ", ";
    }
   cout << '>'; 
}
  • sol2: list를 queue처럼 활용해 원형 큐를 제작한 풀이(뭐.. deque도 되고, 다 된다.)
#include <bits/stdc++.h>
using namespace std;
int main(){
    int N, K;
    cin >> N >> K;
    list<int> q;
    for(int i = 1; i <= N; ++i){
        q.push_front(i);
    }
    long long cnt = 0;
    cout << '<';
    while(!q.empty()){
        ++cnt;
        if(cnt % K == 0){
            if(q.size() == 1) cout << q.back();
            else cout << q.back() << ", ";
            q.pop_back();
        }
        else{
            q.push_front(q.back());
            q.pop_back();
        }
    }
   cout << '>'; 
}
profile
GAME DESIGN & CLIENT PROGRAMMING

0개의 댓글