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이라서 값이 안들어가는 것 아닌가..? 라고 생각했다.
하지만 arr1
이 answer
에 대입된 것을 보면 진상을 파악할 수 있게 된다.
arr1
의 참조변수 값이 answer
로 들어간 것이다!
처음 answer
를 초기화 할 때 {}
라고 한다면 크기가 0인 배열이 아닌, null이 된다는 것도 깨달았다.
null이기 때문에 참조변수값이 할당 될 수 있었 던 것이다.