
요약
- 1번부터 n명이 순서대로 원을 이루며 앉음
- 자연수 k가 주어지고 순서대로 k번째 사람을 제거함
- 모두 제거될때 까지 2번은 반복됨
- n,k가 주어지면 제거되는 순서대로 출력
아이디어
- n명을 배치해야함
- 어디에?
1. 배열 x(인덱스 중간의 삭제가 힘듦)
2. 스택 x(한쪽에서만 삽입과 제거가능)
3. 큐 o (원형을 아래의 그림처럼 전단의 제거를 후단의 삽입으로 생각가능)

- 큰 틀을 모델링
- 전체큐 입력받음
- 전단부터 k번째의 수가 출력되고 제거되어야함
- k-1번 (삽입 + 제거) → 출력 + 제거
- queue가 empty가 될때까지 위의 과정을 반복
코드작성
#include <queue>
#include <iostream>
using namespace std;
int main()
{
queue <int> q;//queue 선언
int n,k;
cin>>n;
cin>>k;
for(int i=1;i<=n;i++){
q.push(i);
}//queue 입력
cout<<"<";
while(!q.empty()){
for(int i=0;i<k-1;i++){
q.push(q.front());
q.pop();
}//k-1번째까지 삽입 + 삭제 반복
cout<<q.front();//k번째 출력
q.pop();//k번째 삭제
if(q.empty()){
break;
}//,를 위한 예외처리
cout<<", ";
}
cout<<">";
return 0;
}