Description
행렬의 덧셈은 행과 열의 크기가 같은 두 행렬의 같은 행, 같은 열의 값을 서로 더한 결과가 됩니다. 2개의 행렬 arr1과 arr2를 입력받아, 행렬 덧셈의 결과를 반환하는 함수, solution을 완성해주세요.
Constraints
행렬 arr1, arr2의 행과 열의 길이는 500을 넘지 않습니다.
My Solution
function solution(arr1, arr2) {
let answer = [];
for (let i = 0; i < arr1.length; i++) {
let temp = [];
for (let j = 0; j < arr1[i].length; j++) {
temp.push(arr1[i][j] + arr2[i][j]);
}
answer.push(temp);
}
return answer;
}
2차원 배열을 다루는 문제이고, 전통적인 이중 for문을 사용하였다.
나는 임시 배열 temp를 만들어서 거기에 array 요소의 합을 push하고, 내부의 for문이 끝난 후에 answer에 temp를 push하는 식으로 로직을 짰다. 외부 for문이 시작될 때 temp는 다시 빈 배열로 선언된다.
Other's Solution
function solution(arr1, arr2) {
var answer = [[]];
for(let i = 0; i < arr1.length; i++) {
answer[i] = [];
for(let j = 0; j < arr1[0].length; j++) {
answer[i][j] = arr1[i][j] + arr2[i][j];
}
}
return answer;
}
내가 한 방식과 비슷하지만 차이는 push 메서드를 쓰지 않았다는 것이다.
대신에 인덱스에 값을 대입하는 식으로 구현하였다.
function sumMatrix(A,B){
return A.map((a,i) => a.map((b, j) => b + B[i][j]));
}
map을 이용해서 2차원 배열을 짧은 코드로도 다룰 수 있다.
map에 화살표 함수를 전달할 때, 화살표 함수의 인자를 잘 기억하고 활용해야겠다.
'Algorithms > Programmers' 카테고리의 다른 글
[프로그래머스 Level 1] 콜라츠 추측 (자바스크립트) (0) | 2021.10.08 |
---|---|
[프로그래머스 Level 1] 제일 작은 수 제거하기 (자바스크립트) (0) | 2021.10.07 |
[프로그래머스 Level 1] 하샤드 수 (자바스크립트) (0) | 2021.10.05 |
[프로그래머스 Level 1] 직사각형 별찍기 (자바스크립트) (0) | 2021.10.05 |
[프로그래머스 Level 1] x만큼 간격이 있는 n개의 숫자 (자바스크립트) (0) | 2021.10.03 |