본문 바로가기
프로그래머스/1단계

행렬의 덧셈

by 긴가우딘 2024. 5. 22.

문제 설명

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

제한 조건

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

입출력 예

arr1 arr2 return

[[1,2],[2,3]] [[3,4],[5,6]] [[4,6],[7,9]]
[[1],[2]] [[3],[4]] [[4],[6]]

for문 2개 돌려서 각각의 [i][j]끼리 더하면 되겠다고 생각했지만 역시나 쉽게 되지 않았다

class Solution {
    public int[][] solution(int[][] arr1, int[][] arr2) {
        int[][] answer = {};
        
        for(int i=0; i<arr1.length; i++) {
            for(int j=0; j<arr2.length; j++) {
                answer[i][j] = arr1[i][j] + arr2[i][j];
            }
        }        
        
        return answer;
    }
}

 

answer의 길이를 정해주는 것을 빼먹었었다.

Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: Index 1 out of bounds for length 1

 

class Solution {
    public int[][] solution(int[][] arr1, int[][] arr2) {
        int[][] answer = new int[arr1[0].length][arr1.length];
        
        for(int i=0; i<arr1.length; i++) {
            for(int j=0; j<arr1.length; j++) {
                answer[i][j] = arr1[i][j] + arr2[i][j];
            }
        }        
                
        return answer;
    }
}

 

Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: Index 1 out of bounds for length 1

다시 수정!!!

 

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[0].length; j++) {
                answer[i][j] = arr1[i][j] + arr2[i][j];
            }
        }        
                
        return answer;
    }
}

 

성공

2차원 배열의 열의 수와 행의 수를 계속 헷갈려했다

arr1[0].length → 열의 수

arr1.length → 행의 수

 

arr2의 행렬을

1

2

이렇게 두고 봤어야 했는데 바보같이

1 2

이렇게 두고 봤었다…. 그래서 한참 헤맴 ㅜㅜ

'프로그래머스 > 1단계' 카테고리의 다른 글

삼각형의 완성조건(2)  (0) 2024.06.08
정수 내림차순으로 배치하기  (2) 2024.05.22
하샤드 수  (1) 2024.05.21
합성수 찾기  (0) 2024.05.18
외계어 사전  (0) 2024.05.18