Algorithm

[BaekJoon] 2738 - 행렬 덧셈

y_lime 2024. 11. 13. 19:23

📄 문제

N*M크기의 두 행렬 A와 B가 주어졌을 때, 두 행렬을 더하는 프로그램을 작성하시오.

🏷️ 입력

첫째 줄에 행렬의 크기 N 과 M이 주어진다. 둘째 줄부터 N개의 줄에 행렬 A의 원소 M개가 차례대로 주어진다. 이어서 N개의 줄에 행렬 B의 원소 M개가 차례대로 주어진다. N과 M은 100보다 작거나 같고, 행렬의 원소는 절댓값이 100보다 작거나 같은 정수이다.

 

3 3
1 1 1
2 2 2
0 1 0
3 3 3
4 4 4
5 5 100

🏷️ 출력

첫째 줄부터 N개의 줄에 행렬 A와 B를 더한 행렬을 출력한다. 행렬의 각 원소는 공백으로 구분한다.

4 4 4
6 6 6
5 6 100

 

🎈 풀이

N, M을 입력 받고 각각의 NxN, MxM크기의 행렬 A,B를 만든다. 우선 "N과 M은 100보다 작거나 같고"이기 때문에 처음 배열 선언할땐 arr[100][100]을 해준다.

그 후에 이제 각각 행렬의 같은 자리에 있는 원소끼리 숫자를 더해서 출력

💻 전체 코드

#include <bits/stdc++.h>

using namespace std;
int n, m;

int main()
{
    cin >> n >> m;
    int arr1[100][100];
    int arr2[100][100];
    int result[100][100];

    for (int i = 0; i < n; i++)
    {
        for (int j = 0; j < m; j++)
        {
            cin >> arr1[i][j];
        }
    }
    for (int i = 0; i < n; i++)
    {
        for (int j = 0; j < m; j++)
        {
            cin >> arr2[i][j];
        }
    }
    for (int i = 0; i < n; i++)
    {
        for (int j = 0; j < m; j++)
        {

            result[i][j] = arr1[i][j] + arr2[i][j];
        }
    }
    for (int i = 0; i < n; i++)
    {
        for (int j = 0; j < m; j++)
        {
            cout << result[i][j] << " ";
        }
        cout << endl;
    }
    return 0;
}

'Algorithm' 카테고리의 다른 글

[BaekJoon] 9012 - 괄호  (0) 2024.11.13
[BaekJoon] 10828 - 스택  (0) 2024.11.13
[BaekJoon] 10798 - 세로읽기  (0) 2024.11.13
[BaekJoon] 23971 - ZOAC 4  (0) 2024.11.10
[BaekJoon] 3052 - 나머지  (0) 2024.11.10