[프로그래머스 1레벨] 행렬의 덧셈

이민선(Jasmine)·2022년 12월 26일
0
post-thumbnail

[[1,2],[2,3]]와 [[3,4],[5,6]]를 더하려면 어떻게 해야할까?

나의 코드

function solution(arr1, arr2) {
       let res = [];
    for(let i=0;i<arr1.length;i++){
        let el = [];
       for(let j=0;j<arr1[0].length;j++){        
 el.push(arr1[i][j]+arr2[i][j]); 
       }
        res.push(el);
    }
    return res;
}

처음에는 딱 떠오르는 풀이는 이중 for문 뿐이었다.
내부의 for문에서 각 원소 배열의 원소들끼리 합산하여 결과 배열을 만들고, 이를 외부의 for문에 push하는 방식이다.

그런데 map으로 한 줄 풀이도 가능하다.
띠용-!

function sumMatrix(arr1,arr2){
   return arr1.map((v,i) => v.map((w, j) => w + arr2[i][j]));
}

[[1,2],[2,3]]에 map을 걸 때 각 배열 원소의 인덱스 표시(i), map 내부에서 [1,2]에 또 map을 걸 때 각 원소의 인덱스 표시(j).
이 때 w는 1이라면 1에 [[3,4],[5,6]][0][0]=3 을 더하면 4이다.
내부의 map에서는 [1,2]내부를 돌면서 [4,6]이되고,
외부의 map에서는 배열 전체를 돌면서 [1,2]는 [4,6]이되고, [2,3]도 [7,9]가 될 수 있도록 전체적으로 배열 원소를 변화시킨다.

이처럼 map의 index를 활용하여 훨씬 간결하게 코드를 나타낼 수 있다.
간결한 코드를 활용할 수 있을 때에는 for문 무새 탈출도 할 수 있는 사람이 되자⭐️

profile
기록에 진심인 개발자 🌿

0개의 댓글