BOJ 11866:ジョセフ問題0


✔問題リンク


BOJ 11866:ジョセフ問題0

✔トラブルシューティングポリシー

  • キュー
  • を利用する.

    ✔解決過程

  • k-1番dequeue、enqueueを繰り返し、k番はキューの一番前にあり、出力してポップアップすればいいです.プロセス要求まで、
  • を繰り返します.

    ✔正解コード

    #include <bits/stdc++.h>
    using namespace std;
    
    int main() {
        ios::sync_with_stdio(0);
        cin.tie(0);
    
        int n, k;
        queue<int> q;
    
        cin >> n >> k;
        for(int i=1;i<=n;i++) {
            q.push(i);
        }
    
        cout << '<';
    
        while(!q.empty()) {
            for(int i=1;i<k;i++) {
                if(k!=1) {
                    int bak = q.front();
                    q.pop();
                    q.push(bak);
                }
            }
            if(q.size()!=1) {
                cout << q.front() << ", ";
            }
            else {
                cout << q.front() << '>';
            }
            q.pop();
        }
        
    }
    
    	
    

    ✔ Comment



    for文増加式ではk++が使われていましたが、ずっとタイムアウトしていたので慌てました.クラスを終えて少しぼんやりしていて、