3번 문제   

 

www.acmicpc.net/problem/11866

 

11866번: 요세푸스 문제 0

첫째 줄에 N과 K가 빈 칸을 사이에 두고 순서대로 주어진다. (1 ≤ K ≤ N ≤ 1,000)

www.acmicpc.net

 



    내가 풀이한 답   

 

  k번째 까지 원소를 뒤로 넣은 다음 k번째 원소를 제거하는 행위를 원소가 하나 남을 때까지 이 과정을 반복하였다.

 

//#include <bits/stdc++.h>
#include <iostream>
#include <queue>
#include <vector>
using namespace std;
int main() {
//freopen("input.txt", "rt", stdin);
queue<int> q;
vector<int> v;
int n, k, i;
cin >> n >> k;
for(i=1; i<=n; i++){
q.push(i);
}
while(true){
if(q.size()==1) {
v.push_back(q.front());
break;
}
for(i=1; i<k; i++){
q.push(q.front());
q.pop();
}
v.push_back(q.front());
q.pop();
}
cout << "<";
for(i=0; i<v.size()-1; i++){
cout << v[i] << ", ";
}
cout << v[v.size()-1] << ">";
return 0;
}

 

 

 

'알고리즘 & 자료구조 > 스택, 큐' 카테고리의 다른 글

4. 프린터 큐(Queue)  (0) 2020.11.01
2. 카드2(Queue)  (0) 2020.10.31
1. K진수 출력(Stack)  (0) 2020.10.24