kar7mp5

[Baekjoon] 1158 요세푸스 문제 (C++ 풀이) 본문

Problem Solving/Baekjoon

[Baekjoon] 1158 요세푸스 문제 (C++ 풀이)

kar7mp5 2024. 9. 14. 02:03
728x90

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;
}
728x90