본문 바로가기
코딩 테스트/백준

[백준][C++]1158-요세푸스 문제 0

by 계양구놈팽이 2022. 5. 27.

자료구조의 이해도를 묻는 문제이다. STL에서 제공하는 queue 를 사용하면 쉽게 풀 수 있다.

주어진 1번부터 N명까지의 사람들을 큐에 집어넣고, 큐가 완전히 empty가 될때까지 계속 사람을 제거하는 작업을 수행해 준다.

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



int main()
{
    int k,n;
    cin >> n >> k;
    
    queue<int> q;
    
    for(int i = 1; i<=n;i++)
    {

        q.push(i);
    }
    
     cout << "<";  
     // q가 빌때까지
    while(!q.empty())
    {
    	// k번째 숫자가 올때까지 앞의 숫자를 빼서 k번째 숫자가 아니라면 다시 뒤로 넣어주는 작업을 반복
        for(int i = 1; i <= k;i++)
        {
            int tmp = q.front();
            q.pop();
            
            if(i != k)
            {
                q.push(tmp);
            }
            else
            {//k번째 숫자를 출력.
                cout << tmp;
                if(!q.empty()) cout << ", ";
            }
        }
    }
    cout << ">";
    

    return 0;
}

 

'코딩 테스트 > 백준' 카테고리의 다른 글

[C++][백준][정렬]2751 - 수 정렬하기 2  (0) 2023.03.06
[백준][c++]14500-테트로미노  (0) 2022.06.12
[백준][C++]11399-ATM  (0) 2022.05.27