안녕하세요. 오늘은 풍선을 터뜨릴 거예요.
https://www.acmicpc.net/problem/2346
큐에 넣고 계속 돌려주면 됩니다.
이때 돌릴 때에는 한 방향으로만 할 수 있으므로 move값을 양수로 맞춰줍니다.
#include <iostream>
#include <queue>
#define ll long long
using namespace std;
int main(void)
{
ios_base::sync_with_stdio(false); cin.tie(NULL);
ll N, i, move[1010] = { 0 };
queue <ll> q;
cin >> N;
for (i = 1; i <= N; i++)
cin >> move[i];
for (i = 1; i <= N; i++)
q.push(i);
while (q.size())
{
cout << q.front() << ' ';
ll x = move[q.front()];
if (x > 0) x--;
q.pop();
if (q.size() == 0) break;
x += q.size() * 1000;
x %= q.size();
while (x--)
{
q.push(q.front());
q.pop();
}
}
}
감사합니다.