© 2025 anveloper.dev
GitHub·LinkedIn·Contact

목차

  • 문제
  • 입력
  • 출력
  • 예제
  • 풀이
  • 코드
  • 복잡도
풀이 목록으로 돌아가기

BOJ 2738 - 행렬 덧셈

2023-09-20
BOJ
브론즈 III
java
원본 문제 보기
수학
구현
사칙연산

문제

BOJ 2738 - 행렬 덧셈

N*M 크기의 두 행렬이 주어질 때, 두 행렬의 합을 출력한다.

입력

첫째 줄에 N과 M이 주어진다. 다음 N줄에 첫 번째 행렬, 그 다음 N줄에 두 번째 행렬이 주어진다.

출력

두 행렬의 합을 N*M 형태로 출력한다.

예제

입력출력
3 3 1 1 1 2 2 2 0 1 0 3 3 3 4 4 4 5 6 74 4 4 6 6 6 5 7 7

풀이

첫 번째 행렬을 배열에 저장한 후, 두 번째 행렬을 읽으며 대응하는 원소를 더하여 출력한다.

  1. N*M 배열에 첫 번째 행렬을 저장한다
  2. 두 번째 행렬을 읽으며 대응하는 원소와 합산한다
  3. 결과를 행 단위로 출력한다

핵심 아이디어: 두 행렬의 대응 원소끼리 덧셈하는 기본 행렬 연산이다.

코드

package day599;
 
import java.io.*;
import java.util.*;
 
public class Day593BOJ2738행렬덧셈 {
  public static void main(String[] args) throws Exception {
    BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
    StringTokenizer st = new StringTokenizer(br.readLine());
    int n = Integer.parseInt(st.nextToken());
    int m = Integer.parseInt(st.nextToken());
    int[][] arr = new int[n][m];
    for (int i = 0; i < n; i++) {
      st = new StringTokenizer(br.readLine());
      for (int j = 0; j < m; j++) {
        arr[i][j] = Integer.parseInt(st.nextToken());
      }
    }
    StringBuilder sb = new StringBuilder();
    for (int i = 0; i < n; i++) {
      st = new StringTokenizer(br.readLine());
      for (int j = 0; j < m; j++) {
        sb.append(arr[i][j] + Integer.parseInt(st.nextToken()) + " ");
      }
      sb.append("\n");
    }
    System.out.println(sb);
  }
}

복잡도

  • 시간: O(N * M)
  • 공간: O(N * M)