백준 2740 c++

magicdrill·2024년 3월 13일

백준 문제풀이

목록 보기
143/673

백준 2740 c++

#include <iostream>

using namespace std;

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_arr(int** arr, int col, int row)
{
	int i, j;

	for (i = 0; i < col; i++)
	{
		for (j = 0; j < row; j++)
		{
			arr[i][j] = input(-100, 100);
		}
	}

	return;
}

void find_result(int **result, int **A, int **B, int N, int M, int K)
{
	int i, j, k;

	for (i = 0; i < N; i++)
	{
		for (j = 0; j < K; j++)
		{
			result[i][j] = 0;
		}
	}
	for (i = 0; i < N; i++)
	{
		for (j = 0; j < K; j++)
		{
			for (k = 0; k < M; k++)
			{
				result[i][j] = result[i][j] + (A[i][k] * B[k][j]);
			}
		}
	}

	return;
}

void print_result(int** result, int N, int K)
{
	int i, j;

	for (i = 0; i < N; i++)
	{
		for (j = 0; j < K; j++)
		{
			cout << result[i][j] << " ";
		}
		cout << "\n";
	}
	return;
}

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

	int N, M, K, i;
	int** A;
	int** B;
	int** result;

	//할당
	N = input(1, 100);
	M = input(1, 100);
	A = new int*[N];
	for (i = 0; i < N; i++)
	{
		A[i] = new int[M];
	}
	input_arr(A, N, M);
	M = input(1, 100);
	K = input(1, 100);
	B = new int* [M];
	for (i = 0; i < M; i++)
	{
		B[i] = new int[K];
	}
	input_arr(B, M, K);
	result = new int*[N];
	for (i = 0; i < N; i++)
	{
		result[i] = new int[K];
	}
	find_result(result, A, B, N, M, K);
	print_result(result, N, K);

	//해제
	for (i = 0; i < N; i++)
	{
		delete[] A[i];
	}
	for (i = 0; i < M; i++)
	{
		delete[] B[i];
	}
	for (i = 0; i < N; i++)
	{
		delete[] result[i];
	}
	delete[] A;
	delete[] B;
	delete[] result;

	return 0;
}

0개의 댓글