알고리즘/백준(BOJ)

백준 - 1158 요세푸스 문제

시나모온 2020. 8. 20. 01:22

문제 링크입니다 : https://www.acmicpc.net/problem/1158

 

1158번: 요세푸스 문제

첫째 줄에 N과 K가 빈 칸을 사이에 두고 순서대로 주어진다. (1 ≤ K ≤ N ≤ 5,000)

www.acmicpc.net

 

 

 

 

 

#include <iostream>
#include <vector>
#include <queue>

using namespace std;

int main() {
    int K, N;
    cin >> K >> N;

    queue<int> q;
    vector<int> result;

    for(int i = 1; i <= K; i++) {
        q.push(i);
    }
    
    
    int temp = 0;
    while(!q.empty()) {
        if(++temp == N) {
            result.push_back(q.front());
            q.pop();
            temp = 0;
        } else {
            q.push(q.front());
            q.pop();
        }
    }

    cout << '<';

    for(int i = 0; i < result.size() - 1; i++) {
        cout << result[i] << ", ";
    }
    cout << result.back();
    cout << '>';

    return 0;
}

 

 

 

개발 환경 : vscode

지적, 조언, 질문 환영입니다! 댓글 남겨주세요~