항해 프로그래머스
항해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;
}