[javascript-algorithm] 프로그래머스 - 행렬의 덧셈

유재민·2021년 8월 25일
0

(1) 문제링크

https://programmers.co.kr/learn/courses/30/lessons/12950


(2) 문제풀이 및 해설 1

- 문제풀이

        const arr1 = [[1,2],[2,3]]
        const arr2 = [[3,4],[5,6]]

        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].push(arr1[i][j] + arr2[i][j])
                }
            }
            return answer;
        }

        console.log(solution(arr1,arr2)); // [[4,6],[7,9]]

- 문제해설

  1. 배열안의 원소가 배열이기때문에 중첩 for문을 활용한다.
  2. answer 변수안에 배열의 원소를 빈 배열로 할당한다. 문제 중 배열이 [[]]로 선언되어있기 때문에 빈 배열을 할당해주어야 오류를 피할 수 있다. 아래 연산에 들어갈 배열 원소의 배열들을 push로 여기에 추가하는 것이다.
  3. 중첩 for문안에 push와 연산을 활용하여 연산된 값을 넣어준다. push되는 위치가 answer이 아닌 answer[i]인 이유는 출력값이 각각의 배열로 나뉘어 있어야 하기 때문이다. answer[i]가 아닌 answer로 더한 값을 전달할 시 출력값은 [4,6,7,9]이 된다.

(2) 문제풀이 및 해설 2

- 문제풀이

        const arr1 = [[1,2],[2,3]]
        const arr2 = [[3,4],[5,6]]

        function solution(arr1, arr2) {
            return arr1.map((arr, i) => arr.map((n, j) => n + arr2[i][j]));
        }

        console.log(solution(arr1,arr2)); // [[4,6],[7,9]]

- 문제해설

  1. arr1 의 배열을 수정하기 위해 arr1.map()을 사용한다. arr1.map(arr, i)의 요소값과 인덱스값이 들어가는데 요소값인 arr은 [[1,2],[2,3]]를 가르킨다.
  2. 두번째로 arr1.map(arr, i)의 인자값 arr에 map을 중첩으로 사용한다. 이유는 배열안의 배열을 연산해야하기때문에 중첩으로 사용 후 연산값을 넣어준다. arr.map과 같이 넣어주는데 여기서 arr이 [[1,2],[2,3]]의 배열 중 [1,2]혹은[2,3]을 가르키게 된다.
  3. arr.map을 가르키는 요소값 n에 arr2[i][j]를 더해준다.

(3) 참고자료

  1. 화살표 함수 중첩 사용
  2. 자바스크립트의 중첩함수
profile
프론트엔드 개발자

0개의 댓글