본문 바로가기
알고리즘 스터디/프로그래머스 스킬체크 레벨 1(끝)

[프로그래머스 스킬체크 레벨 1] 행렬의 덧셈 풀이 및 설명 - 자바스크립트[JavaScript]

by 레일라오리덕 2021. 7. 15.
728x90

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

 

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

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

programmers.co.kr

 

문제

 

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

 

제한 사항

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

결괏값 예시

 

arr1 arr2 return
[[1,2],[2,3]] [[3,4],[5,6]] [[4,6],[7,9]]
[[1],[2]] [[3],[4]] [[4],[6]]

 

기본 제공 틀

 

function solution(arr1, arr2) {
    var answer = [[]];
    return answer;
}

 

풀이 [JavaScript]

 

728x90

처음에 이 문제를 풀 때,  answer[i][j] = arr1[i][j] + arr2[i][j]를 하면 되는 줄 알았다.

하지만 계속 값이 안들어가져서 뭐가 문제인지 찾아본 결과, answer는 1차원 배열로 선언되어 있어서 값이 안들어가졌던 것이었다. 

자바나 파이썬에서는 new Array[2][2]와 같은 방식으로 2행 2열을 선언할 수 있었는데, 자바스크립트에서는 이러한 방식이 없다고 한다.

2차원 배열을 따로 선언을 해줘야하지만 값이 들어가진다는 것을 알고, 아래와 같이, answer라는 1차원 array에다가 answer의 i번째 인덱스마다 새롭게 배열을 선언해주었다.

그러면 answer = []; 이런 배열이었다가, answer의 0, 1, 2...번째 배열을 선언해주면, answer=[[],[],[]...]; 이런식으로 각 인덱스마다 새로운 배열이 선언하게 된다.

answer의 i번째 인덱스마다 선언된 배열은 answer의 i행 j열에 arr1, arr2의 각 자릿수의 합이 더해지게되고, 이 값을 리턴해주면 원하는 결과값을 얻을 수 있다.

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][j] = arr1[i][j] + arr2[i][j];
        }
    }
    return answer;
}

 

채점 결과 [JavaScript]

 

728x90

댓글