백준 11728 c

magicdrill·2024년 4월 8일
0

백준 문제풀이

목록 보기
269/655

백준 11728 c

#include <stdio.h>
#include <stdlib.h>
#pragma warning (disable:4996)

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

	while (1)
	{
		scanf("%d", &A);
		if (A >= lower && A <= upper)
		{
			break;
		}
		else
		{
			;
		}
	}

	return A;
}

void input_arr(int* arr, int n)
{
	int i;

	for (i = 0; i < n; i++)
	{
		arr[i] = input(-1000000000, 1000000000);
	}

	return;
}

void merge_arr(int* A, int N, int* B, int M)
{
	int sum = N + M;
	int i, j = 0, k = 0;
	int* merge_arr = (int*)malloc(sizeof(int) * sum);

	if (merge_arr == NULL)
	{
		return;
	}
	else
	{
		;
	}
	for (i = 0; i < sum; i++)
	{
		if (j == N)
		{
			merge_arr[i] = B[k];
			k++;
		}
		else if (k == M)
		{
			merge_arr[i] = A[j];
			j++;
		}
		else if (A[j] <= B[k])
		{
			merge_arr[i] = A[j];
			j++;
		}
		else if (A[j] > B[k])
		{
			merge_arr[i] = B[k];
			k++;
		}
		else
		{
			;
		}
	}
	for (i = 0; i < sum; i++)
	{
		printf("%d ", merge_arr[i]);
	}
	printf("\n");

	free(merge_arr);

	return;
}

int main(void)
{
	int N, M;

	N = input(1, 1000000);
	M = input(1, 1000000);
	int *A, *B;

	A = (int*)malloc(sizeof(int) * N);
	B = (int*)malloc(sizeof(int) * M);
	if (A == NULL || B == NULL)
	{
		return 1;
	}
	else
	{
		;
	}
	input_arr(A, N);
	input_arr(B, M);
	merge_arr(A, N, B, M);

	free(A);
	free(B);

	return 0;
}

0개의 댓글