코딩테스트
[JS] 연습문제 > 행렬의 덧셈
차차한
2022. 8. 24. 09:17
function solution(arr1, arr2) {
var answer = [];
var arr = [];
for(var i = 0;i < arr1.length; i++){
for(var j = 0 ; j < arr1[i].length; j++){
arr.push(arr1[i][j] + arr2[i][j]);
}
answer.push(arr);
arr = [];
}
return answer;
}
원래도 이차원배열을 어려워했는데 JS에서 이차원배열은 더 어려웠다.
[[4,6],[7,9]]처럼 나와야하는데 계속 [[4,6,7,9]]이렇게 들어가지고..;;
JAVA에서 했던 것과는 다르게 접근을 했어야 했다.
먼저 arr 배열에 두 값을 더한 값을 넣고, 그것을 answer배열에 넣어 이차원배열을 만든다.
이때 주의해야 할 것이 arr을 다시 비워줘야 한다는 것!
비워주지 않으면 [[4,6,7,9],[4,6,7,9]] 이렇게 들어가진다.
한 배열을 푸쉬하고 또다른 배열을 푸쉬해줘야해서 그렇다.
연습문제였는데도 꽤 많이 헤맨 문제.. 다음에 다시 풀어봐야겠다.
function solution(arr1, arr2) {
return arr1.map((a,i) => a.map((b, j) => b + arr2[i][j]));
}
다른 사람 풀이1.
map을 사용한 방법이다.
나도 처음에는 map으로 문제를 풀어보고 싶었는데 잘 안 됐었다..
arr1이 [[1,2],[2,3]]일 때 첫 a는 [1,2](arr1[0])가 된다. 이 a 배열을 다시 map으로 반복하면 b는 1(arr[0][0])과 2(arr[0][1])가 되고, arr2의 [i][j]인덱스부터 반복해서 더해주면 된다.
풀이를 보니 쉬워보이는 문제...
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;
}
다른 사람 풀이2.
이분은 answer를 처음부터 이차원배열로 선언을 하고 arr[i]을 비워준 후 그 값에 인덱스를 더한 값을 넣어줬다.
안에 들어가는 배열의 값을 비워주는게 이 문제의 포인트였다!