행렬의 덧셈 (자바)

김재현·2024년 4월 22일
0

알고리즘 풀이

목록 보기
75/90

문제

정답 풀이

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

먼저 answer에 크기가 같도록 배열을 만들어준다.

그 이후에 각 값을 하나씩 더하여 같은 위치에 넣어주기만하면 되는 간단한 문제였다.

이 문제를 기록하는 이유는 다른 사람의 풀이에서 새로운걸 알았기 때문이다.

다른 사람 풀이

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

내 풀이와 다른 점은 int[][] answer을 초기화 할 때 단순히 {}만 사용했다는 것이다.

처음엔 저렇게 하면 배열의 크기가 0이라서 값이 안들어가는 것 아닌가..? 라고 생각했다.
하지만 arr1answer에 대입된 것을 보면 진상을 파악할 수 있게 된다.

arr1의 참조변수 값이 answer 로 들어간 것이다!
처음 answer를 초기화 할 때 {} 라고 한다면 크기가 0인 배열이 아닌, null이 된다는 것도 깨달았다.

null이기 때문에 참조변수값이 할당 될 수 있었 던 것이다.

profile
I live in Seoul, Korea, Handsome

0개의 댓글