행과 열의 크기가 같은 두 행렬 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];
}
}
answer 초기화를 잘못했다int[][] answer = {}로 선언하면 빈 배열이라 결과를 담을 공간이 없다.
2차원 배열은 행 크기, 열 크기를 지정해서 초기화해야 한다.
j < arr2.length는 행 개수를 기준으로 순회한다.
j는 열을 순회해야 하므로 arr1[i].length를 써야 한다.
arr.length → 행 개수 (바깥 배열 길이)
arr[i].length → 열 개수 (i번째 행의 원소 개수)
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;
}
}