본문 바로가기
Algorithm/Programmers

[Programmers] 행렬의 덧셈(JavaScript)

by 백승전 2022. 3. 26.

 

문제

 

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

 

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

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

programmers.co.kr

 

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

 

풀이

 

똑같은 크기의 행렬이 두 개가 있는데, 여기서 같은 행과 같은 열의 값을 더한다고 합니다. 배열 안에 배열이 있으니, 이중 for문으로 같은 자리의 값을 더하고 이를 배열에 담아 return 하는 것이 큰 흐름인 것 같습니다.

 

코드(테스트 불통과)

 

function solution(arr1, arr2) {
    let answer = [];
    let sum = [];
    
    for (let i = 0; i < arr1.length; i++) {
       for (let j = 0; j < arr1[i].length; j++) {
           sum.push(arr1[i][j] + arr2[i][j]); 
       }
       
        answer.push(sum);
    }
    
    return answer;
}



값을 더하고 이 더한 값들로 배열을 만들어 return 시키기 위한 변수를 만들었습니다. arr1과 arr2의 같은 자리의 값을 더해 더한 값들을 담는 변수에 push() 함수를 사용해 담았고, 이 변수를 다시 빈 배열 answer에 담아 return을 하였습니다.

 

하지만 이는 오답이었는데요.

 

출처: 프로그래머스

 

오답을 보니 코드가 틀린 건 아니고, 배열을 잘못 선언해 줬거나 변수 선언 위치가 잘못된 것 같았고, 다음과 같이 수정하였습니다.

 

코드(테스트 통과)

 

function solution(arr1, arr2) {
    let answer = [];
    
    for (let i = 0; i < arr1.length; i++) {
        let sum = [];
        
        for (let j = 0; j < arr1[i].length; j++) {
           sum.push(arr1[i][j] + arr2[i][j]);
       }
       
        answer.push(sum);
    }
    
    return answer;
}

댓글