[programmers] 2차원 배열

채연·2023년 6월 23일
0

programmers

목록 보기
4/5

문제

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

제한 조건
행렬 arr1, arr2의 행과 열의 길이는 500을 넘지 않습니다.

풀이

문제는 아주 간단했다!

각 인덱스끼리 더한 값을 출력하면 됐다.

function solution(arr1, arr2) {
    const arr = [[]]
    
    arr1.map((row, i) => {
        row.map((column, index) => {
            arr[i][index] = (arr1[i][index] + arr2[i][index])
        })
    })
    
    return arr;
}

그래서 이중 map을 돌려주었고,

오류에 부딪혔당 ..ㅎ

undefined 어쯔고저쯔고였는데 보자마자 왜 오류가 났는지 딱 알았다. 이차원 배열 할당이 안 되어 있는 상태였기 때문이다!

arr을 초기화 해준 후 다시 이렇게 해주어야겠다고 생각했다.

하지만, 어떻게 초기화 하지..?

진짜 멍청했다..

이차원 배열 초기화하는 법을 몰랐다 ㅠ,ㅠ

const arr = Array.from(new Array(arr1.length), () => new Array(arr1[0].length).fill(0));

구글링으로 검색해서 완료!

Array.from.. 많이 봤지만 너무 어렵다...

쨌든 이렇게 초기화 해주고

function solution(arr1, arr2) {
    const arr = Array.from(new Array(arr1.length), () => new Array(arr1[0].length).fill(0));
    
    arr1.map((row, i) => {
        row.map((column, index) => {
            arr[i][index] = (arr1[i][index] + arr2[i][index])
        })
    })
    
    return arr;
}

코드 돌리기 성공!!


다른사람 코드

이렇게 구현 후 당연히 다른 사람들은 좋은 방법을 통해 구현했을 거라고 생각했다.

function sumMatrix(A,B){
    return A.map((arr1, idx1) => arr1.map((val, idx2) => val+B[idx1][idx2]));
}

역시나..

초기화해줄 필요 없이 그냥 그 코드에 더하기만 하면 됐는데 왜 이걸 몰랐을까!!!

profile
Hello Velog

0개의 댓글