[백준알고리즘] 2738번 행렬 덧셈

2024. 1. 22. 08:29백준알고리즘/구현

728x90

문제출처 : https://www.acmicpc.net/problem/2738

 

2738번: 행렬 덧셈

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

www.acmicpc.net


알고리즘 유형

알고리즘분류 : 수학

언어 : JAVA


문제


접근

처음 문제를 접했을 때 입력값을 어떤형태로 받아야할지에 대한 것이 고민됨.

대략 문제를 접했을 때, 2차원배열로 받으면 대상의 결과값을 편하게 덧셈한 결과를 출력할 수 있을 것으로 예상.

다만, 2중 for문을 여러 번 사용해야한다는 점이 찝찝했음.

 

코드

package org.example.question.구현;

import java.util.Arrays;
import java.util.Scanner;

/*
* 문제: N*M크기의 두 행렬 A와 B가 주어졌을 때, 두 행렬을 더하는 프로그램을 작성하시오.
* 입력: 첫째 줄에 행렬의 크기 N 과 M이 주어진다. 둘째 줄부터 N개의 줄에 행렬 A의 원소 M개가 차례대로 주어진다.
*      이어서 N개의 줄에 행렬 B의 원소 M개가 차례대로 주어진다. N과 M은 100보다 작거나 같고, 행렬의 원소는 절댓값이 100보다 작거나 같은 정수이다.
* 출력: 첫째 줄부터 N개의 줄에 행렬 A와 B를 더한 행렬을 출력한다. 행렬의 각 원소는 공백으로 구분한다.
* */
public class Q2738 {
    public static void main(String[] args) {

        //1. 입력값 담기
        //   입력값을 2차원배열에 담음
        //
        Scanner sc = new Scanner(System.in);
        int N = sc.nextInt();
        int M = sc.nextInt();
        int[][] arrN = new int[N][M];
        int[][] arrM = new int[N][M];
        for (int i = 0; i < N; i++) {
            for (int j = 0; j < M; j++) {
                arrN[i][j] = sc.nextInt();
            }
        }
        for (int i = 0; i < N; i++) {
            for (int j = 0; j < M; j++) {
                arrM[i][j] = sc.nextInt();
            }
        }

        //2. A행렬 B행렬 더하기
        int[][] rstArr = new int[N][M];
        for (int i = 0; i < N; i++) {
            for (int j = 0; j < M; j++) {
                rstArr[i][j] = arrN[i][j] + arrM[i][j];
                System.out.print(rstArr[i][j]);
                if (j < M - 1) {
                    System.out.print(" ");
                }
            }
            System.out.println();
        }
    }
}
728x90

'백준알고리즘 > 구현' 카테고리의 다른 글

[백준알고리즘] 2920번 음계  (2) 2024.01.26
[백준알고리즘] 10773번 제로  (2) 2024.01.25