본문으로 바로가기

📘문제 설명

행렬의 덧셈은 행과 열의 크기가 같은 두 행렬의 같은 행, 같은 열의 값을 서로 더한 결과가 됩니다. 2개의 행렬 arr1과 arr2를 입력받아, 행렬 덧셈의 결과를 반환하는 함수, solution을 완성해주세요.

https://school.programmers.co.kr/learn/courses/30/lessons/12950

 

프로그래머스

SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프

programmers.co.kr

 

 


📌 제한조건

  • 행렬 arr1, arr2의 행과 열의 길이는 500을 넘지 않습니다.

💡 개념 설명

 

  • 결과 행렬 초기화: 입력 행렬 arr1과 동일한 크기의 2차원 배열 **answer**를 생성합니다.
  • 행 순회: arr1의  길이만큼 외부 반복문을 실행합니다.
  • 열 순회: arr1의  길이만큼 내부 반복문을 실행합니다.
  • 원소 덧셈: 각 반복에서 같은 위치(i행, j열)의 원소인 **arr1[i][j]**와 **arr2[i][j]**를 더하여 그 결과를 answer[i][j]에 저장합니다.
  • 결과 반환: 모든 덧셈이 완료된 최종 행렬 answer를 반환합니다.

 


📎 입출력 예시


📎 코드

import java.util.Arrays;

public class Solution {
    public int[][] solution(int[][] arr1, int[][] arr2) {
        // 1. 결과 행렬 초기화
        int rows = arr1.length;
        int cols = arr1[0].length;
        int[][] answer = new int[rows][cols];
        
        // 2. 행렬 순회 및 덧셈
        for (int i = 0; i < rows; i++) {
            for (int j = 0; j < cols; j++) {
                answer[i][j] = arr1[i][j] + arr2[i][j];
            }
        }
        
        // 3. 결과 반환
        return answer;
    }

    public static void main(String[] args) {
        Solution sol = new Solution();

        // 테스트 케이스 1: [[1, 2], [2, 3]] + [[3, 4], [5, 6]] = [[4, 6], [7, 9]]
        int[][] arr1_1 = {{1, 2}, {2, 3}};
        int[][] arr2_1 = {{3, 4}, {5, 6}};
        
        // 테스트 케이스 2: [[1], [2]] + [[3], [4]] = [[4], [6]]
        int[][] arr1_2 = {{1}, {2}};
        int[][] arr2_2 = {{3}, {4}};

        int[][] result1 = sol.solution(arr1_1, arr2_1);
        int[][] result2 = sol.solution(arr1_2, arr2_2);

        System.out.println("결과 1: " + Arrays.deepToString(result1)); 
        System.out.println("결과 2: " + Arrays.deepToString(result2)); 
    }
}

 


📎 결과