← Back to Blog

[Baekjoon 1158 | C++] Josephus Problem

computer science > algorithm

2026-07-041 min read

#computer-science #algorithm #baekjoon #problem-solving

https://www.acmicpc.net/problem/1158

뭔가 매우 불필요한 방식으로 문제 해결한 거 같습니다. 그래서 코드만 참고하시면 좋을 거 같습니다.

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

void print_result(vector<int> &v) {
    cout << '<';
    for (int i = 0; i < v.size(); ++i) {
        cout << v[i];
        if (i != v.size() - 1) {
            cout << ", ";
        }
    }
    cout << '>';
}

int main() {
    ios::sync_with_stdio(0);
    cin.tie(0);
    cout.tie(0);

    int N, K;
    cin >> N >> K;

    vector<int> v;
    for (int i = 0; i < N; ++i) {
        v.push_back(i + 1);
    }

    vector<int> result;
    int idx = K - 1;
    for (int i = 0; i < N - 1; ++i) {
        result.push_back(v[idx]);
        v.erase(v.begin() + idx);
        idx = (idx + K - 1) % v.size();
    }
    result.push_back(v[0]);
    print_result(result);

    return 0;
}