안녕하세요. 오늘은 풍선을 터뜨릴 거예요.

문제

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();
		}
	}
}


감사합니다.

0개의 댓글