행렬의 덧셈은 행과 열의 크기가 같은 두 행렬의 같은 행, 같은 열의 값을 서로 더한 결과가 됩니다. 2개의 행렬 arr1과 arr2를 입력받아, 행렬 덧셈의 결과를 반환하는 함수, solution을 완성해주세요.
arr1 | arr2 | return |
---|---|---|
[[1,2], [2,3]] | [[3,4], [5,6]] | [[4,6],[7,9]] |
[[1],[2]] | [[3],[4]] | [[4],[6]] |
function solution(phone_number) {
var answer = '';
return answer;
}
function solution(arr1, arr2) {
for (let i = 0; i < arr1.length; i++) {
//예시 1번의 arr1의 길이(2)만큼 반복하게 되면, arr1[0] = [1, 2], arr1[1] = [2,3]
for (let j = 0; j < arr1[i].length; j++)
//위 arr1[i] 길이(2)만큼 반복하게 되면, arr1[0][0] = 1, arr1[0][1] = 2, arr1[1][0] = 2, arr1[1][1] = 3 이렇게 총 4개의 값이 나온다.
arr1[i][j] += arr2[i][j];
//4개의 값에 arr1과 같은 길이를 가지고 있는 arr2[i][j]를 더해준다.
}
return arr1;
}
답 보고 풀었다. 두 번째 for 문에서 왜 j < arr1.length 가 아니라 j < arr1[i].length 인지 헷갈렸다. 이것은 두 번째 예시를 적용하여 알 수 있었다. 첫 번째 예시 같은 경우는 arr1의 length 와 arr1[i]의 length 가 같지만, 두 번째는 그렇지 않다. 따라서 arr1 안에 있는 값(배열) 내부에 있는 값들의 개수가 arr1 안에 있는 값(배열)의 개수와 다를 수 있기 때문에 j < arr1[i].length 인 것이다.
또한 arr1[0][0] + arr2[0][0] = 4 인데, 이것을 return arr1 했을 때 바로 기존 arr1 배열 틀 안으로 들어가는 것이 신기했다.
undefined
function solution(arr1, arr2) {
return arr1.map((a,i) => a.map((b, j) => b + arr2[i][j]));
}
(출처: https://developer.mozilla.org/ko/)