ALGORITHM/PROGRAMMERS

[프로그래머스] 행렬의 덧셈 | javascript

heeney 2021. 7. 30. 16:16
728x90

[프로그래머스] 행렬의 덧셈 | javascript level 1

문제 설명

행렬의 덧셈은 행과 열의 크기가 같은 두 행렬의 같은 행, 같은 열의 값을 서로 더한 결과가 됩니다. 2개의 행렬 arr1과 arr2를 입력받아, 행렬 덧셈의 결과를 반환하는 함수, solution을 완성해주세요.

제한 조건

  • 행렬 arr1, arr2의 행과 열의 길이는 500을 넘지 않습니다.

입출력 예

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) {
    let answer = [];
    for(let i=0; i<arr1.length; i++) {
        let tmp = [];
        for(let j=0; j<arr1[i].length; j++) {
            tmp.push(arr1[i][j]+arr2[i][j]);
        }
        answer.push(tmp)
    }
    return answer;

}

이중for문을 돌려서 각 0인덱스0번째요소, 0인덱스1번째요소, 1인덱스0번째요소..등등 더해줍니다.
첫번째 for문에서 빈 배열을 만들어서 두번째 for문때 그 배열에 push해줍니다. 더해진 배열은 answer 배열에 push해주는 것을 반복하면 정답이 반환됩니다.

 

다른 분이 작성하신 좋은 코드

function sumMatrix(A,B){
    return A.map((a,i) => a.map((b, j) => b + B[i][j]));
}
function solution(arr1, arr2) {
    var answer = [[]];
    for (var i=0; i<arr1.length; i++){
        answer[i] =[];
        for(var j=0; j<arr1[i].length; j++){
            answer[i].push(arr1[i][j] + arr2[i][j]);
        }
    }
    return answer;
}

map을 이용해서 한줄로 끝낼수도 있고 두번째 방법은 제가 푼 방법에서 더 간결하게 푸신 것 같아 추가했습니다.

728x90