행렬의 덧셈

나의 기록·2026년 6월 29일

코딩테스트

목록 보기
20/35

문제 요약

행과 열의 크기가 같은 두 행렬 arr1, arr2를 입력받아 행렬 덧셈 결과를 반환하는 문제.


내가 처음 짠 코드

int[][] answer = {};

for(int i=0; i<arr1.length; i++){
    for(int j=0; j<arr2.length; j++){
        int sum = arr1[i][j] + arr2[i][j];
    }
}

뭘 몰랐나

1. answer 초기화를 잘못했다

int[][] answer = {}로 선언하면 빈 배열이라 결과를 담을 공간이 없다.
2차원 배열은 행 크기, 열 크기를 지정해서 초기화해야 한다.

2. 안쪽 반복문 범위가 틀렸다

j < arr2.length행 개수를 기준으로 순회한다.
j는 열을 순회해야 하므로 arr1[i].length를 써야 한다.

arr.length      → 행 개수 (바깥 배열 길이)
arr[i].length   → 열 개수 (i번째 행의 원소 개수)

3. 계산 결과를 저장하지 않았다

sum을 구해놓고 어디에도 넣지 않았다.


어떻게 바꿨나

int[][] answer = new int[arr1.length][arr1[0].length]; // 행/열 크기 지정

for(int i=0; i<arr1.length; i++){
    for(int j=0; j<arr1[i].length; j++){   // 열 순회는 arr1[i].length
        answer[i][j] = arr1[i][j] + arr2[i][j]; // 바로 answer에 저장
    }
}

핵심 정리

arr[i][j]
     │  └── j : 열 (한 행 안의 몇 번째 원소?)
     └───── i : 행 (몇 번째 줄?)

arr.length      → 행 개수
arr[i].length   → 열 개수

2차원 배열은 배열 안의 배열이다.
arr[i]가 하나의 행(1차원 배열)이고, arr[i][j]가 그 행의 j번째 원소.


최종 코드

class Solution {
    public int[][] solution(int[][] arr1, int[][] arr2) {
        int[][] answer = new int[arr1.length][arr1[0].length];
        
        for(int i=0; i<arr1.length; i++){
            for(int j=0; j<arr1[i].length; j++){
                answer[i][j] = arr1[i][j] + arr2[i][j];
            }
        }
        
        return answer;
    }
}
profile
뭐든 남겨본다

0개의 댓글