[백준] 1158번 요세푸스 문제 / C++
#문제
#풀이
#include <iostream>
#include <vector>
using namespace std;
vector<int> vec;
int main()
{
ios::sync_with_stdio(false);
cin.tie(nullptr);
int n, k;
cin >> n >> k;
for (int i = 0; i < n; ++i)
{
vec.push_back(i+1);
}
cout << '<';
int idx = 0;
while(1 < vec.size())
{
idx = (idx + k - 1) % vec.size();
cout << vec[idx] << ", ";
vec.erase(vec.begin() + idx);
}
cout << vec[0] << '>';
return 0;
}
#정리
n개의 원소를 배열로 받아, k번째 원소를 출력/삭제하며 줄여가는 문제. 인덱스를 선언하여 출력할 원소를 연산하는 것이 포인트, 출력한 원소는 배열에서 삭제하고 모든 원소가 출력될 때까지 반복하여 해결.
Enjoy Reading This Article?
Here are some more articles you might like to read next: