Oops, All Code!/🤯 Oops, My Algorithm!

♡̈ 18. 프로그래머스:: 행렬의 덧셈

밍동망동 2024. 7. 13. 21:10

 

1. 각 행과 각 열의 원소를 순회해 더한 값을 새로운 행렬에 저장함
2. 최종 결과 행렬을 반환함

 

그 뭐랄까 행렬만 나오면 일단 걱정되는데

그래도 문제 조건에 더하는 방법 같은게 나와있어서 그대로 풀어봤다.

function solution(arr1, arr2) {
    let result = [];

    for (let i = 0; i < arr1.length; i++) {
        let row = [];
        for (let j = 0; j < arr1[i].length; j++) {
            row.push(arr1[i][j] + arr2[i][j]);
        }
        result.push(row);
    }

    return result;
}

 

+ 덧

배열의 경우 const 선언이 가능하는 댓글을 봤다.

 

배열을 const 로 선언했을 때, 왜 push와 pop이 가능할까 (state 배열)

갑자기 궁금해짐 조만간 알아보도록 하자 대체 언제 옴? 알아보러 왔다. 우선 const 가 무엇인지에 대해 알아보자 const 선언은 블록 범위의 상수를 선언합니다. 상수의 값은 재할당할 수 없으며 다

morohaji.tistory.com

따라서 안정화를 위해

let result = []

 

해당 부분을 const 선언해주면 좋을 것 같다.

const result = []

 

나는 이런 문제 보면 역시 메서드 같은게 안 떠오르는데

다른 사람들은 바로 배열이니까 map도 쓰고 하는거 보면 참 대단하다.

 

난 아직 익숙한 것에서 벗어나는 사고력이 부족한 것 같다 т  ̫ т

 

다른 사람의 코드

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

 

특히 내부 map 메서드 부분에 대한 이해가 어려웠다.

arr1.map((val, idx2) => val + B[idx1][idx2])

 

arr1의 각 원소를 순회하고, idx2는 현재 열이다.

각 원소(val)의 동일 위치인 B 행렬의 원소를 더한다.

 

val는 A 행렬의 [idx1][idx2]를 나타낸다.