백준 24511 c++

magicdrill·2024년 4월 16일
0

백준 문제풀이

목록 보기
313/654

백준 24511 c++

#include <iostream>
//#include <queue>
//#include <stack>
#include <vector>
#include <deque>

using namespace std;

int input(int lower, int upper);
void input_kind(vector <int>& kind, int size);
void input_int_string(vector <int>& int_str, int size);
void check_result(vector <int> kind, vector <int> original, vector <int> insert);

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

	int N, M;
	vector <int> kind;
	vector <int> original;
	vector <int> insert;

	N = input(1, 100000);
	input_kind(kind, N);
	input_int_string(original, N);
	M = input(1, 100000);
	input_int_string(insert, M);
	check_result(kind, original, insert);

	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_kind(vector <int> &kind, int size)
{
	//cout << "input_kind()" << endl;
	int i;

	for (i = 0; i < size; i++)
	{
		kind.push_back(input(0, 1));
	}

	return;
}

void input_int_string(vector <int>& int_str, int size)
{
	//cout << "input_int_string()" << endl;
	int i;

	for (i = 0; i < size; i++)
	{
		int_str.push_back(input(1, 1000000000));
	}

	return;
}

void check_result(vector <int> kind, vector <int> original, vector <int> insert)
{
	//cout << "check_result()" << endl;
	int i;
	unsigned int kind_size = kind.size();
	unsigned int insert_size = insert.size();
	deque <int> edit;
	vector <int> result;

	//스택인 경우는 변화없음...
	//큐일 때만 결과값 변함...
	//큐인 것만 따로 빼서 새로운 deque를 만들기
	
	for (i = 0; i < kind_size; i++)
	{
		if (kind[i] == 0)//큐인경우
		{
			edit.push_back(original[i]);
		}
		else//스택인 경우
		{
			;
		}
	}//큐인 것만 따로 빼서 새로운 deque를 만듦

	for (i = 0; i < insert_size; i++)
	{
		edit.push_front(insert[i]);
		result.push_back(edit.back());
		edit.pop_back();
	}

	//결과 출력
	for (i = 0; i < result.size(); i++)
	{
		cout << result[i] << " ";
	}
	cout << "\n";

	return;
}

0개의 댓글