글 작성자: 취업중인 피터팬
728x90

https://www.acmicpc.net/problem/2738

 

2738번: 행렬 덧셈

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

www.acmicpc.net

문제 설명

 

행렬 덧셈에 관한 문제입니다. 기본적으로 행렬에 대한 기본 지식이 있어야 풀 수 있는 문제입니다.

 

문제 풀이

9단계는 분명 정렬 문제였는데..정렬를 공부하고 있는 중간에 갑자기 행렬 문제가 추가되서 당황했습니다. 황급히 행렬 문제를 먼저 풀고 정렬로 넘어가도록 하겠습니다.

해당 입력 그림에서는 이쁘게 3칸 3칸으로 행렬을 알아볼 수 있도록 해주었지만 사실 문제 설명을 위해 저렇게 이쁘게 만들어 놓은거지 사실은 그냥 입력해도 무방합니다. 하지만 예제 출력은 조건이 있으니깐 이쁘게 만들어줍시다.

2차원 배열을 사용해서 간단하게 풀었습니다.

import java.util.*;

public class Main{
    public static void main(String[] args){
        Scanner sc = new Scanner(System.in);

        int n = sc.nextInt();
        int m = sc.nextInt();

        int[][] arrayA = new int[n][m];
        int[][] arrayB = new int[n][m];
        int[][] arrayResult = new int[n][m];

        for(int i=0; i<n; i++){
            for(int j=0; j<m; j++){
                arrayA[i][j] = sc.nextInt();
            }
        }

        for(int i=0; i<n; i++){
            for(int j=0; j<m; j++){
                arrayB[i][j] = sc.nextInt();
            }
        }

        for(int i=0; i<n; i++){
            for(int j=0; j<m; j++){
                arrayResult[i][j] = arrayA[i][j] + arrayB[i][j];
            }
        }

        for(int i=0; i<n; i++){
            for(int j=0; j<m; j++){
                System.out.printf(arrayResult[i][j] + " ");
            }
            System.out.println();
        }
    }
}

이중 반복문을 이용해서 입력받고 더하면 결과를 출력할 수 있습니다.