행렬의 덧셈은 행과 열의 크기가 같은 두 행렬의 같은 행, 같은 열의 값을 서로 더한 결과가 됩니다. 2개의 행렬 arr1과 arr2를 입력받아, 행렬 덧셈의 결과를 반환하는 함수, solution을 완성해주세요.
반복문을 두번 순회 하면서 얻은 값으로 리턴 값을 구하는 방법을 선택하기는 쉬웠다. 다만, 리턴 값이 2차원 배열로 지정이 되어있기 때문에 1번 조건에 맞추는 것이 관건이었다.
이 부분은 아무리 문제를 해결하려고 노력해도 해결되지 않아, 힌트를 참조 했는데 방법은 참으로 간단했다.
리턴 되어야할 배열인 answer의 n번째 값을 배열로 구성하는 것이기 때문에 첫번째 반복문 안에 answer의 요소를 빈 배열로 할당해주어야 한다.
answer[i] = [];
두 번째로 돌아갈 반복문의 기준도 arr2가 아닌 arr1[i]를 기준으로 잡고 반복문을 돌리면
손쉽게 arr2의 배열 요소에 접근이 가능했다.
function solution(arr1, arr2) {
var answer = [[]];
for(let i = 0; i < arr1.length; i++) {
answer[i] = [];
for(let j = 0; j < arr1[i].length; j++) { // 굳이 arr2.length로 비교할 필요가 없다.
answer[i][j] = arr1[i][j] + arr2[i][j] // arr2의 각 요소들은 arr1이 가이드해놓은 길을 따라 요소가 접근되기 때문이다.
}
}
return answer;
}
function sumMatrix(A,B){
var answer = Array();
for(let i=0;i<A.length;i++){
var newarr = A[i].map(function(item, index, A){
return item + B[i][index];
});
answer[i] = newarr;
}
return answer;
}
처음 문제를 풀려고 했던 방식은 map을 이용한 접근 방식이었다. 조금 더 메소드에 대해 친숙해질 수 있도록
예제를 더 풀어봐야겠다. 깔끔한 문제풀이가 인상적이다.