11866 - 요세푸스 문제 0

solution

code

#include <iostream>
#include <vector>
#include <deque>
using namespace std;

int main()
{
    int N, K;
    cin >> N >> K;
    deque<int> deque;
    for(int i = 0; i < N; i++)
        deque.push_back(i+1);

    int idx = K-1;
    vector<int> ans;

    for(int i = 0; i < K-1; i++)
    {
        int tmp = deque.front();
        deque.pop_front();
        deque.push_back(tmp);
    }
    while(deque.size() > 0)
    {
        ans.push_back(deque.front());
        deque.pop_front();
        for(int i = 0; i < K-1; i++)
        {
            int tmp = deque.front();
            deque.pop_front();
            deque.push_back(tmp);
        }
    }
    cout << "<";
    int i;
    for(i = 0; i < N-1; i++)
        cout << ans[i] << ", ";
    cout << ans[i] << ">" << endl;

    return 0;
}
#include <iostream>
#include <vector>
#include <queue>
using namespace std;

int main()
{
    int N, K;
    cin >> N >> K;
    queue<int> queue;
    for(int i = 0; i < N; i++)
        queue.push(i+1);

    int idx = K-1;
    vector<int> ans;

    for(int i = 0; i < K-1; i++)
    {
        queue.push(queue.front());
        queue.pop();
    }
    
    while(queue.size() > 0)
    {
        ans.push_back(queue.front());
        queue.pop();
        for(int i = 0; i < K-1; i++)
        {
            queue.push(queue.front());
            queue.pop();
        }
    }
    cout << "<";
    int i;
    for(i = 0; i < N-1; i++)
        cout << ans[i] << ", ";
    cout << ans[i] << ">" << endl;

    return 0;
}

ref

11866번: 요세푸스 문제 0

Double free or corruption after queue::push