(JS) Programmers : 행렬의 덧샘

호두파파·2021년 1월 29일
0

메모

목록 보기
8/18

문제 설명

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

제한 조건

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

입출력 예

문제풀이

반복문을 두번 순회 하면서 얻은 값으로 리턴 값을 구하는 방법을 선택하기는 쉬웠다. 다만, 리턴 값이 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을 이용한 접근 방식이었다. 조금 더 메소드에 대해 친숙해질 수 있도록

예제를 더 풀어봐야겠다. 깔끔한 문제풀이가 인상적이다.

profile
안녕하세요 주니어 프론트엔드 개발자 양윤성입니다.

0개의 댓글