알고리즘 문제
[백준] 11866번 요세푸스 문제 0
feelcoding
2021. 1. 3. 15:15
728x90
11866번: 요세푸스 문제 0
첫째 줄에 N과 K가 빈 칸을 사이에 두고 순서대로 주어진다. (1 ≤ K ≤ N ≤ 1,000)
www.acmicpc.net
벡터의 원소를 직접 제거해가면서 풀었다.
주의할 점은 벡터의 크기가 점점 줄어들기 때문에 index가 벡터의 범위를 넘어가지 않게 % 연산자를 이용해 조정해줘야 한다.
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
int main() {
int n, k;
cin >> n >> k;
vector<int> v(n);
for (int i = 0; i < n; i++) {
v[i] = i + 1;
}
int index = 0;
while (!v.empty()) {
if (v.size() == n) {
cout << '<';
}
index += (k - 1);
index %= v.size();
cout << v[index];
v.erase(v.begin() + index);
if (v.empty()) {
cout << '>';
}
else {
cout << ", ";
}
}
return 0;
}
728x90