코딩 테스트/백준
[백준][C++]1158-요세푸스 문제 0
계양구놈팽이
2022. 5. 27. 06:07
자료구조의 이해도를 묻는 문제이다. 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;
}