반응형
[풀이]
function solution(arr1, arr2) {
let result = [[]];
for (let i = 0; i < arr1.length; i++) {
result[i] = [];
for (let j = 0; j < arr1[i].length; j++) {
result[i].push(arr1[i][j] + arr2[i][j]);
}
}
return result;
}
1. 이중배열 변수 result 를 선언한다.
2. 이중 for문을 통해서 값을 받아왔다.
- 안쪽 for문 result[i]에 행렬의 덧셈을 넣어주면 된다.
[코드 리뷰]
function solution(arr1, arr2) {
const result = [];
for (let i = 0; i < arr1.length; i++) {
const temp = [];
for (let j = 0; j < arr1[i].length; j++) {
temp.push(arr1[i][j] + arr2[i][j]);
}
result.push(temp);
}
return result;
}
위의 풀이처럼 temp 라는 배열을 활용하는 코드가 더 직관적이고 자주 활용되는 방법이다.
이때 temp 나 sumArr 등 어울리는 변수명을 쓰는 것이 더 적절하다.
temp 배열에 더한 값을 넣고, 다시 result 배열에 배열을 집어 넣어주는 방식이다.
[추가 코드]
1. 이중 map 함수 활용
function solution(arr1, arr2) {
return arr1.map((innerArr, i) => {
return innerArr.map((el, j) => el + arr2[i][j]);
});
}
예시) arr 1 = [[1, 2], [2, 3]] arr2 = [[3, 4], [4, 5]]
arr1.map((innerArr, i) => {} )에서
innerArr 은 요소값이며 즉 [1, 2], [2, 3] 이고 i 는 인덱스값으로 0, 1 이 된다.
이 때 0번 값은 [1, 2] 이며 1번 값은 [2, 3] 이다.
그렇기때문에 0번 값부터 시작하면서 안 쪽 map 으로 들어가게 된다.
인덱스값이 0 일 때,
[1, 2]가 들어가고 이 배열에서도 인덱스값으로 나눠 [1, 2]의 인덱스값 0인 1이 arr2[0][0]과 더해진다.
arr2[0][0]은 [3, 4]의 첫번째 값인 3이 된다.
따라서 1 + 3 = 4 이고
안쪽 map의 인덱스값이 1이면 [1, 2] 의 2 가 arr2[0][1] 과 더해진다.
arr2[0][1]은 [3, 4]의 두번째 값인 4이고 2 + 4 = 6 이 되며
바깥쪽 인덱스값이 0 일때 배열은 결국 [4, 6]이 된다.
그리고 다시 바깥쪽 인덱스값이 1 일때 값을 계산해주면 된다.
'코딩 테스트 > Programmers - 1' 카테고리의 다른 글
[JS] 최대공약수와 최소공배수 (0) | 2022.09.30 |
---|---|
[JS] 약수의 개수와 덧셈 (0) | 2022.09.29 |
[JS] 내적 (0) | 2022.09.26 |
[JS] 약수의 합 (1) | 2022.09.25 |
[JS] 자릿수 더하기 (0) | 2022.09.24 |