일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- 온라인계약
- 좋은습관
- 전자계약시스템
- 아이폰12
- 전자계약서
- 아주작은습관의힘
- atomichabits
- 독후감
- javascript
- 마케팅
- 아이폰13
- 자바스크립트
- 블록체인
- 자릿수더하기
- 독서리뷰
- 모두싸인
- 모두사인
- 갤럭시노트20
- 전자계약
- 코딩테스트
- 모두싸인마케터
- 모두의사인
- 습관
- 전자계약서비스
- 알고리즘
- 아이폰
- 모두싸인마케팅
- 옥소폴리틱스
- map
- 전자계약솔루션
- Today
- Total
찰리의 이야기
Javascript 행렬의 덧셈 본문
Javascript 행렬의 덧셈
문제 :행렬의 덧셈은 행과 열의 크기가 같은 두 행렬의 같은 행, 같은 열의 값을 서로 더한 결과가 됩니다. 2개의 행렬 arr1과 arr2를 입력받아, 행렬 덧셈의 결과를 반환하는 함수, solution을 완성해주세요.
제한 조건
- 행렬 arr1, arr2의 행과 열의 길이는 500을 넘지 않습니다.
입출력 예시 (arr1, arr2, return)
[[1,2],[2,3]] | [[3,4],[5,6]] | [[4,6],[7,9]] |
[[1],[2]] | [[3],[4]] | [[4],[6]] |
주어진 코드 ↓
function solution(arr1, arr2) {
var answer = [[]];
return answer;
}
먼저 배열의 값들을 연산을 통해 새로운 배열로 반환한다는 점에서
map() 메서드을 이용할 수 있을 것이라는 생각이 들었다.
하지만, 1차원적인 방법으로 우선 풀어보았다.
배열속에 배열이 있다보니 배열 탐색을 하되 중첩 반복문을 이용해야 할 것 같다.
그리고 배열 안에 또다른 배열이 추가될지 여부도 판단하여,
새롭게 할당한 다음 더한 값을 할당해줘야겠다.
function solution(arr1, arr2) {
let answer = [];
for(let i=0; i<arr1.length; i++){
answer[i] = [];
for(let j=0; j<arr1[i].length; j++){
answer[i][j] = arr1[i][j] + arr2[i][j];
}
}
return answer;
}
처음엔 push() 메서드를 이용해서 값을 넣을까 생각했었는데,
행렬일 맞는 위치에 할당하다보니 직접 대입하는 방식을 사용했다.
처음 주어진 answer = [] 은 원래 주어진 내부 []을 삭제하긴 했는데
큰 의미는 없다. 있어도 되고 없어도 된다. 어짜피 같은 값을 할당하기 때문이다.
여기까지가 나의 풀이고
다른 풀이도 참고해보았다.
function sumMatrix(A,B){
return A.map((a,i) => a.map((b,j)=> b + B[i][j]));
}
이 풀이법이 제일 간단해 보였는데,
map 매서드를 중첩해서 풀어내었다.
중첩 반복문이 있듯이,
map도 중첩으로 이용할 수 있다는 것을 이해할 수 있었다.
첫번째 배열에 map을 걸어주면서 i 인덱스를 만들어주고,
다시금 내부 배열에 대해 map을 걸어주면서 j 인덱스를 만들어준다.
그리고 그 내부의 currentValue 요소와 B배열의 i행j열 요소를 더해주는 배열을 리턴하는 것이다.
특정 빈배열을 별도로 할당해주지 않아도
알아서 배열을 구성하는 이유는
애시당초 문제에서 행열이 같은 크기의 두 배열을 다루었기 때문인 것 같다.
배열의 중첩 반복문을 이용할땐,
map을 중첩으로 이용해서 풀어보자!
Javascript 행렬의 덧셈
'찰리: 코딩 연습' 카테고리의 다른 글
Javascript 하샤드 수 (0) | 2021.09.08 |
---|---|
Javascript 핸드폰 번호 가리기 (0) | 2021.09.01 |
Javascript x만큼 간격이 있는 n개의 숫자 (0) | 2021.08.28 |
Javascript 직사각형 별찍기 (0) | 2021.08.27 |
Javascript 자릿수 더하기 (0) | 2021.08.26 |