[백준 1158] 요세푸스 문제
[백준 1158] 요세푸스 문제
#include "header.h"
using namespace std;
int N, K;
queue <int> q;
vector<int> answer;
void print() {
cout << '<';
for(int i=0; i<answer.size()-1; i++){
cout << answer[i] << ", ";
}
cout << answer[answer.size()-1] << '>';
}
int main() {
cin >> N >> K;
for(int i=1; i<=N; i++) q.push(i);
int cnt = 0;
while (!q.empty()){
int top = q.front();
q.pop();
cnt++;
if(cnt == K) {
answer.push_back(top);
cnt = 0;
}else q.push(top);
}
print();
return 0;
}
- 다시 알고리즘 시작.. 몸풀기로 쉬운거 하나 풀었다.
- 큐로 원형을 만들면서 구현 하면 되는 문제.
- cnt 변수를 두어 하나씩 더해가면서, K 번째가 될 때 answer에 넣어준다.
- 큐가 빌 때 까지 반복한다.