행렬의 덧셈

hyuri·2023년 9월 18일
0

코딩테스트 연습

목록 보기
23/70

내가 작성한 답(오류)

function solution(arr1, arr2) {
    let answer = [];
    let arrResult = [];
    for (let i = 0; i<arr1.length; i++){
        const sumArray = [];
        for(let j = 0; j<arr2.length; j++){
            sumArray.push(arr1[i][j] + arr2[i][j]);
        }
        arrResult = sumArray.filter(item => !isNaN(item));
        answer.push(arrResult);
    }
    console.log(answer);
    return answer;
}

깔끔한 답

function solution(arr1, arr2) {
    const answer = arr1.map((x,x_row) => x.map((y,y_col) => y+arr2[x_row][y_col]));
    
    return answer;
}

나와 비슷한 답

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;
}

코드 해석

깔끔한 답

arr1.map((x,x_row) => ...)

arr1 배열을 순회하고 각 행을 x로 가져옴

x.map((y,y_col) => ...)

x를 순회하고 각 행을 y로 가져옴

y+arr2[x_row][y_col]

yarr2의 동일한 위치에 있는 요소를 더함.

나와 비슷한 답 + 오류가 난 이유
비슷한 답은 빈 배열을 하나 추가한 상태로 시작하여 for문을 통해 요소를 더하고 배열에 추가했다.
내가 작성한 코드는 초기화하지 않고 빈 배열로 시작해서 이전 값을 덮어쓰게 된다.
따라서, answer 배열에는 모든 행이 동일한 값을 가지게 되기 때문에 오류가 발생했음.

profile
개발자가 되고 싶은 지망생

0개의 댓글