1부터 N까지 풍선에 숫자가 주어지고, 해당 숫자만큼 idx를 이동시켜 다음 idx에 해당하는 풍선을 터뜨리는 방식
단, 원형의 형태로 1보다 왼쪽은 N이 되고, N보다 오른쪽은 1이 된다.
이때, nxt는 크기를 나타냄 x(-1)
#include <iostream>
#include <vector>
using namespace std;
struct info {
int idx, nxt;
};
int n;
vector <info> v;
int main() {
cin >> n;
for (int i = 1, num; i <= n; i++) {
cin >> num;
v.push_back({i, num});
}
while(!v.empty()) {
cout << v.front().idx << " ";
int nxt = v.front().nxt;
v.erase(v.begin());
if (nxt > 0) { // 오른쪽 이동
for (int i = 0; i < nxt - 1; i++) {
v.push_back(v.front());
v.erase(v.begin());
}
} else { // 왼쪽 이동
for (int i = 0; i < (nxt * (-1)); i++) {
v.insert(v.begin(), v.back());
v.erase(v.end() - 1);
}
}
}
return 0;
}