#70. 백준 2738번 문제 풀이: 행렬 덧셈 문제 원본 보기
N*M 크기의 두 행렬 A B를 더하는 프로그램을 작성하시오. 입력: 첫줄에 행렬의 크기 N M. 둘째줄 부터 A 행렬 M*N 개가 주어지고, B의 행렬 M*N이 주어진다. N M 은 100이하, 행렬의 원소는 절대값 100이하 정수이다. 출력: A B를 더한 M*N 행렬 출력.
입력/출력
--입력--
3 3
1 1 1
2 2 2
0 1 0
3 3 3
4 4 4
5 5 100
--출력--
4 4 4
6 6 6
5 6 100
문제풀이+해설
두 행렬의 덧셈은 같은 행, 같은 열끼리 값을 더해서 같은 행, 열에 위치시키면 된다.

프로그램 루틴은,
행(N) 과 열(M) 값을 받고,
행(N) 줄까지 열(M) 갯수의 숫자를 입력받아 배열에 저장해서, 같은 배열 위치값 끼리 더하면 된다.

행렬의 덧셈 원리와 기본적인 배열의 사용법을 알고 있으면 쉽게 풀 수 있다.
code sol.
#include <stdio.h>

int main() {
  int A[101][101]; // A행렬 받을 2차원 배열
  int B[101][101]; // B행렬 받을 2차원 배열
  int N, M, i, j;
  scanf("%d %d", &N, &M); // N * M 행, 열 갯수 받음
  
  // A 행렬값을 입력받는다.
  for(i = 0; i < N; i++) // 행 만큼 반복
    for(j = 0; j < M; j++) // 열 만큼 반복
      scanf("%d", &A[i][j]); // 값을 받음
  // B 행렬값을 입력받는다.
  for(i = 0; i < N; i++) // 행 만큼 반복
    for(j = 0; j < M; j++) // 열 만큼 반복
      scanf("%d", &B[i][j]); // 값을 받음

  // A + B 계산해서 출력.
  for(i = 0; i < N; i++) { // 행수 만큼 반복
    for(j = 0; j < M; j++) { // 열수 만큼 반복
      printf("%d ", A[i][j] + B[i][j]); // 더해서 출력
    }
    printf("\n"); // 줄 바꿈
  }
  return 0;
}
© 코드솔 - CodeSol. All Rights Reserved.