⚙️ 코딩테스트

[JavaScript] 프로그래머스 코딩테스트 레벨 1 : 행렬의 덧셈

썸머몽 2023. 4. 10. 20:39
728x90

문제 및 제한사항

 

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

 

**제한사항**

행렬 arr1, arr2 행과 열의 길이는 500 넘지 않습니다.

 

풀이 방법

 

예를 들어 arr1 = [[1,2],[2,3]] arr2 = [[3,4],[5,6]]일 때 [[4,6],[7,9]]를 반환해야 한다.

 

이런 배열은 처음 봐서 많이 헤맸는데 일단 행과 열을 생각하면서 이것저것 콘솔을 찍어봤다.

arr1의 경우 2행 2열의 모습으로 arr1[0][0] = 1, arr1[1][0] = 2, arr1[0][1] = 2, arr1[1][1] = 3 이런 모습이었다.

즉 for문을 돌려서 해결할 수 있을 것 같았다.

 

for문을 돌려서 arr1의 평범한(?) 행 길이 만큼 순회하게 하고,

그 다음에 그 행 안의 배열의 길이를 순회하게 했다.

 

즉 arr1의 길이를 먼저 알아내고 이중 for문으로 arr1[0]의 길이도 알아냈다.

현재 배열들의 모든 길이가 같기 때문에 arr1[0]으로 못 박고 가도 상관 없었다.

 

새롭게 만들어둔 배열에 arr1[i][j] + arr2[i][j]를 push한다.

문제는 그냥 하나의 배열에만 push하면 우리가 원하는 값처럼 [[4, 6], [7, 9]]가 아닌 [4, 6, 7, 9]로만 출력된다.

push할 때 또 다른 배열을 하나 더 만들고 그 곳에 push한 후 그 녀석을 전역에서 선언했던 배열에 한 번 더 넣어준다.

 

2차원 배열은 이렇게 푸는 거구나... 또 한 번 배웠다.

 

코드

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