항해 프로그래머스

항해2주차 자바스크립트 프로그래머스 - 행렬의 덧셈

완두노예 2023. 1. 27. 16:33

나의 풀이

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;
} // 각 행과 열을 for문을 돌리고 행은 행끼리, 열은 열끼리 합친다.

5번째 줄에 for(var j=0; j<arr1[i].length; j++) 중에서 arr1[i] 왜 i가 들어갈까 생각해봤는데

문제 설명중 '행과 열의 크기가 같은 행렬' 이라고 써있다.

그러니까 j가 i의 전체길이전까지 돌아야 i에서 설정한 길이값과 맞게 나올테니까.

 

이중for문을 돌려서 각 0인덱스0번째요소, 0인덱스1번째요소, 1인덱스0번째요소..등등 더해준다.
첫번째 for문에서 빈 배열을 만들어서 두번째 for문때 그 배열에 push한다.

더해진 배열은 answer 배열에 push해주는 것을 반복하면 정답이 반환된다.

 

다른 풀이

Map 이용 이해X

function sumMatrix(A,B){
    return A.map((a,i) => a.map((b,j) => b + B[i][j]));
}
function sumMatrix(A,B){
    /*var answer = Array();
  var rowMax = A.length > B.length ? A.length : B.length;
  var colMax = A[0].length > B[0].length ? A[0].length : B[0].length;
    for(var i=0; i < rowMax; i++)
  {
    answer[i] = new Array();
    for(var j=0; j < colMax; j++)
    {
      console.log(isNaN(A[i][j])?0:A[i][j]);
      console.log(isNaN(B[i][j])?0:B[i][j]);
            answer[i][j] = parseInt(isNaN(A[i][j])?0:A[i][j]) + parseInt(isNaN(B[i][j])?0:B[i][j]);
    }
  }*/

    return A.map((a,i) => a.map((b, j) => b + B[i][j]));
}
const matrixAddition = (matrix1, matrix2) =>
  matrix1.map((row, y) =>
    row.map((v, x) => v + matrix2[y][x]));

function solution(arr1, arr2) {
    return matrixAddition(arr1, arr2);
}
function sumMatrix(A,B){
    return A.map(function(v,i){
    return (typeof(v)=="object")? sumMatrix(v,B[i]):v+B[i];
  });
}
function solution(arr1, arr2) {
    const answer = [];
    arr1.forEach((arr, i) => answer.push(arr.map((v, j) => v + arr2[i][j])));
    return answer;
}
function sumMatrix(A,B){

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

    return answer;
}