행렬의 덧셈은 행과 열의 크기가 같은 두 행렬의 같은 행, 같은 열의 값을 서로 더한 결과가 됩니다. 2개의 행렬
arr1
과arr2
를 입력받아, 행렬 덧셈의 결과를 반환하는 함수, solution을 완성해주세요.
행렬 arr1, arr2의 행과 열의 길이는 500을 넘지 않습니다.
✅ 덧셈 결과를 저장할 2차원 배열
answer[][]
의 크기를arr1
의 크기와 동일하게 설정한다. 행의 크기는 전체 배열의 개수arr1.length
, 열의 크기는 한 배열 안의 요소의 개수arr1[0].length
이다.
이후 이중 for문을 돌려서 두 배열의 같은 위치에 존재한 요소를 더한 값을answer[행][열]
에 저장하여 리턴한다.
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;
}
}
➕ 다른 사람의 코드 : 어차피
answer
과arr1
의 크기가 같으므로 굳이length
를 통해 번거롭게 크기를 구할 필요 없이 그냥arr1
자체를answer
에 저장해준다. 이후 이중 for문에서는answer
에 이미arr1
의 요소가 저장되어 있으므로arr2
의 요소만 더해주면 된다.
실제로 내 풀이대로length
를 통해 크기를 선언하다가 행, 열을 착각해서 참조 범위 예외가 한 번 터졌었는데, 이렇게 푸니 헷갈릴 필요도 없이 굉장히 간단해졌다,,
class Solution {
public int[][] solution(int[][] arr1, int[][] arr2) {
int[][] answer = arr1;
for(int i=0;i<arr1.length;i++) {
for(int j=0;j<arr1[i].length;j++) {
answer[i][j] += arr2[i][j];
}
}
return answer;
}
}