백준 연습

백준 새싹 배열 2738번 행렬 덧셈

빙하둘리 2022. 9. 4. 20:05
728x90

백준 행렬 덧셈

 

일단 new와 delete로 2차원 배열을 어떻게 동적으로 생성하고 해제하는지 알아야한다.

new 키워드로 2차원 배열 동적 할당하기

int** arr = new int*[row]; //2차원 배열의 행의 길이만큼 동적 할당

for(int i = 0; i < row; i++) //각 행에 채우고자하는 배열의 열 길이만큼 할당
    arr[i] = new int[col];

delete로 해제하는 방법

for(int i=0; i<row; i++)
	delete[] arr[i];

delete[] arr;

 

행렬을 담는 2차원 배열을 2개 선언하고 반복문으로 각 요소끼리 더해준다.

#include <iostream>
using namespace std;

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

	int N, M;
	cin >> N >> M;

	int** A = new int* [N];
	int** B = new int* [N];

	for (int i = 0; i < N; i++)
		A[i] = new int[M];

	for (int i = 0; i < N; i++)
		B[i] = new int[M];

	for (int i = 0; i < N; i++)
	{
		for (int j = 0; j < M; j++)
		{
			cin >> A[i][j];
		}
	}

	for (int i = 0; i < N; i++)
	{
		for (int j = 0; j < M; j++)
		{
			cin >> B[i][j];
		}
	}

	for (int i = 0; i < N; i++)
	{
		for (int j = 0; j < M; j++)
		{
			cout << A[i][j]+B[i][j];
			if (j != M - 1)
				cout << " ";
		}
		if (i != N - 1)
			cout << "\n";
	}


	for (int i = 0; i < N; i++)
		delete[] A[i];
	delete[] A;

	for (int i = 0; i < N; i++)
		delete[] B[i];
	delete[] B;

	return 0;
}
728x90