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

백승연·2024년 1월 31일
0

프로그래머스 - Lv. 1

목록 보기
30/31

🗒️ 문제

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


제한 조건

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

입출력 예

arr1arr2return
[[1, 2], [2, 3]][[3, 4], [5, 6]][[4, 6], [7, 9]]
[[1], [2]][[3], [4]][[4], [6]]

🖋️ 나의 풀이

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

처음에 위처럼 풀었는데 예제는 통과가 됐지만 제출하니까 런타임 에러가 떠서 질문하기를 보고 아래와 같이 답을 고쳤다

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

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

💡 다른 사람들의 풀이

# 1

// 문제가 개편되었습니다. 이로 인해 함수 구성이나 테스트케이스가 변경되어, 과거의 코드는 동작하지 않을 수 있습니다.
// 새로운 함수 구성을 적용하려면 [코드 초기화] 버튼을 누르세요. 단, [코드 초기화] 버튼을 누르면 작성 중인 코드는 사라집니다.
function sumMatrix(A,B){
    return A.map((arr1, idx1) => arr1.map((val, idx2) => val+B[idx1][idx2]));
}

// 아래는 테스트로 출력해 보기 위한 코드입니다.
console.log(sumMatrix([[1,2], [2,3]], [[3,4],[5,6]])) 

# 2

이게 내가 원래 시도하려던 방식인데 이렇게 사용하는 거였군

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;
}



📝 모르는 내용 찾아보기

profile
공부하는 벨로그

0개의 댓글