728x90
벡터의 원소를 직접 제거해가면서 풀었다.
주의할 점은 벡터의 크기가 점점 줄어들기 때문에 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
'알고리즘 문제' 카테고리의 다른 글
[백준] 1074번 Z (0) | 2021.01.04 |
---|---|
[백준] 1004번 어린 왕자 (0) | 2021.01.03 |
[백준] 2217번 로프 (0) | 2021.01.02 |
[백준] 10799번 쇠막대기 (0) | 2021.01.02 |
[백준] 5582번 공통 부분 문자열 (0) | 2020.09.10 |