자료구조의 이해도를 묻는 문제이다. 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 |