c++

백준 c++ 1158 문제 풀이2

psb08 2025. 5. 20. 08:02
728x90
반응형

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

목차

1. 설명

 

2. 내 코드

 

3. 실행 결과

 

설명

백준 실버 4 문제 입니다.

문제명 : 요세푸스 문제

이번에는 list, iterator를 사용하여 풀었습니다.

 

내 코드

#include<iostream>
#include<string>
#include<vector>
#include<stack>
#include<queue>
#include<list>
#include<algorithm>

using namespace std;

int main()
{
    ios_base::sync_with_stdio(false);
    cin.tie(NULL);
    cout.tie(NULL);

    int n, k;
    cin >> n >> k;

    list<int> circleList;

    for (int i = 1; i <= n; ++i)
    {
        circleList.push_back(i);
    }

    list<int>::iterator target = circleList.begin();

    cout << "<";

    while (n > 0)
    {
        for (int i = 1; i < k; i++)
        {
            target++;
            if (target == circleList.end()) target = circleList.begin();
        }
        if (n == 1)
        {
            cout << *target;
            break;
        }
        cout << *target << ", ";
        n--;
        target = circleList.erase(target);
        if (target == circleList.end()) target = circleList.begin();
    }
    cout << ">";


}

 

실행 결과

 

'c++' 카테고리의 다른 글

c++의 function과 EventBus로 활용법  (0) 2025.12.12
백준 c++ 28278 문제 풀이  (0) 2025.05.21
백준 c++ 1158 문제 풀이  (0) 2025.05.19
백준 c++ 1966 문제 풀이  (0) 2025.05.18
백준 c++ 1269 문제 풀이  (0) 2025.05.17