본문 바로가기
Algorithm

[프로그래머스] 행렬의 덧셈 - JavaScript 📝

by Baest 2021. 11. 9.

[링크]

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

 

코딩테스트 연습 - 행렬의 덧셈

행렬의 덧셈은 행과 열의 크기가 같은 두 행렬의 같은 행, 같은 열의 값을 서로 더한 결과가 됩니다. 2개의 행렬 arr1과 arr2를 입력받아, 행렬 덧셈의 결과를 반환하는 함수, solution을 완성해주세요

programmers.co.kr

 

 

 

[문제설명 및 입출력 예]

 

 

 

[내가 제출한 코드 및 풀이]

 

📝풀이과정

더보기
  1. 2차원 행렬 arr1, arr2 이니까 내부 값 연산을 위해 for문을 2번 돌려야 한다고 판단
  2. 1번째 for문은 i, 2번째 for문은 j 로 변수 선언 후 arr1.length만큼 반복문 돌림
  3. 2번째 for문에서 arr[i][j] 값들을 연산해서 1차원 배열의 temp에 넣어줌
  4. 현재 temp는 1차원 배열 형태이므로, anwer라는 1차원 배열에 한 번 더 넣어서 2차원으로 만들어줌

 

 

[다른 사람의 코드]

1
 2
3
function solution(arr1, arr2) {
    return arr1.map((arr, i) => arr.map((n, j) => n + arr2[i][j]));
}
 
cs
  • map 을 사용한 풀이

 

1
2
3
4
5
6
7
8
9
10
function sumMatrix(A,B){
    var answer = Array();
        for(var i = 0; i < A.length; i++){
      answer[i] = []; 
      for(var j = 0; j < A[i].length; j++){
          answer[i][j] = A[i][j] + B[i][j];             
      }
        }
    return answer;
}
 
cs
  • 내부 for문에 연산 값들을 담고, 값이 담긴 1차원 배열을 answer에 다시 담는식으로 작성된 것 같음

 

1
2
3
4
5
6
7
8
9
10
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;
}
 
cs
  • 첫번째 for문에 answer[i]로 만들고 두번째 for문을 돌면서 1차원 배열들을 answer[i]에 담는다.

👉내가 원했던 방식! 연산된 값을 출력 결과와 똑같이 담는 과정에서 버벅여서 다른 방법을 사용했다. answer[i] = []; 여기까지 생각을 못했다😂