Q 2738 행렬 덧셈

💡 문제 요약 및 분석

N * M 크기의 두 행렬 A와 B가 주어졌을 때, 두 행렬을 더해서 출력하면 된다.

💡 알고리즘 설계

📌 핵심 아이디어 : 배열을 하나만 생성해서 두 번째 행렬의 값을 곧바로 더하자.

  1. 입력

    • StringTokenizer 로 행렬의 크기 N, M 입력받아 이차원 배열 생성.
  2. 연산

    • while - for 구조로 N * 2 개의 줄을 입력 받으면서 배열에 더한다.
  3. 출력

    • 이중 for문으로 StringBuilder 에 저장하여 한 번에 출력한다.

💡 코드

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;

public class Main {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        StringBuilder sb = new StringBuilder();

        String num = br.readLine();
        StringTokenizer st = new StringTokenizer(num);
        int N = Integer.parseInt(st.nextToken());
        int M = Integer.parseInt(st.nextToken());
        int[][] ary = new int[N][M];

        for (int i = 0; i < 2; i++) {
            for (int j = 0; j < N; j++) {
                st = new StringTokenizer(br.readLine());
                for (int k = 0; k < M; k++) {
                    ary[j][k] += Integer.parseInt(st.nextToken());
                }
            }
        }

        for (int i = 0; i < N; i++) {
            for (int j = 0; j < M; j++) {
                sb.append(ary[i][j]).append(" ");
            }
            sb.append("\n");
        }
        System.out.println(sb);
    }
}

💡 시간 복잡도, 공간 복잡도

시간 복잡도공간 복잡도
O(n * m)O(n * m)

💡 느낀점 및 기억할 정보

  • 공백으로 자르기 : split() 써도 된다. String[] line = br.readLine().split() 으로 공백을 제거한 문자열 배열로 변환 가능하다.