[프로그래머스 | Javascript] 코딩테스트 Lv1 - 행렬의 덧셈

✔문제 설명

행렬의 덧셈은 행과 열의 크기가 같은 두 행렬의 같은 행, 같은 열의 값을 서로 더한 결과가 됩니다. 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(arr1, arr2) {
    const array=[];
    arr1.map((item,index)=>{
        let newarray=[];        // 빈배열을 만든다.
        for(let i=0;i<item.length;i++){     //행렬의 내부 요소의 길이만큼 반복
            newarray.push(arr1[index][i]+arr2[index][i]);   
        }array.push(newarray);
    });
    return array;
}

 

이 문제를 보자마자 배열 요소들의 각각을 순환하면서 각각의 더해줘 새 배열에 넣어주는 방식으로 풀어야 겠다고 생각했다. 복잡해 보이지 않기 위해서 for문 대신 map함수를 사용했지만 map 함수 안에는 어쩔수 없지 for문을 사용해 순환을 했다. 

✔다른 사람 풀이

function solution(A, B) {
     return A.map((a, i) => a.map((b, j) => b + B[i][j]));
 }

이렇게 간단하게 풀 수도 있구나 생각했다. map 함수안에 map함수를 넣는다는 생각을 하지 못했다. 풀이가 훨씬 간단하고 이해하기도 쉽다.