백준 2346 c++

magicdrill·2024년 3월 7일

백준 문제풀이

목록 보기
111/673

백준 2346 c++

#include <iostream>
#include <deque>

using namespace std;

int input(int lower, int upper);
void input_balloon_paper(deque <pair<int, int>>& balloon, int num);
void print_order(deque <pair<int, int>>& balloon);

int main(void)
{
	ios_base::sync_with_stdio(false);
	cin.tie(NULL);
	cout.tie(NULL);

	int N;
	deque <pair<int, int>> balloon;

	N = input(1, 1000);
	input_balloon_paper(balloon, N);
	print_order(balloon);
	
	return 0;
}

int input(int lower, int upper)
{
	//cout << "input" << endl;
	int A;

	while (1)
	{
		cin >> A;
		if (A >= lower && A <= upper)
		{
			break;
		}
		else
		{
			;
		}
	}

	return A;
}

void input_balloon_paper(deque <pair<int, int>>& balloon, int num)
{
	//cout << "input_balloon_paper" << endl;
	int i;
	int temp;

	for (i = 0; i < num; i++)
	{
		temp = input(-1 * num, num);
		if (temp == 0)
		{
			i--;
		}
		else
		{
			balloon.push_back(make_pair(temp, i+1));
		}
	}

	return;
}

void print_order(deque <pair<int, int>>& balloon)
{
	//cout << "print_order" << endl;
	int size = balloon.size();
	int order, temp, i;

	while (size > 0)
	{
		order = balloon.front().second;
		cout << order << " ";
		temp = balloon.front().first;
		balloon.pop_front();
		if (balloon.empty())
		{
			break;
		}
		if (temp > 0) //종이의 수가 양수일때
		{
			for (i = 0; i < temp - 1; i++)
			{
				balloon.push_back(balloon.front());
				balloon.pop_front();
			}
		}
		else //종이의 수가 음수일때
		{
			for (i = 0; i < -1*temp; i++)
			{
				balloon.push_front(balloon.back());
				balloon.pop_back();
			}
		}
		size--;
	}
	cout << "\n";

	return;
}

0개의 댓글