https://programmers.co.kr/learn/courses/30/lessons/12950
문제
행렬의 덧셈은 행과 열의 크기가 같은 두 행렬의 같은 행, 같은 열의 값을 서로 더한 결과가 됩니다. 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]
처음에 이 문제를 풀 때, 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]
'알고리즘 스터디 > 프로그래머스 스킬체크 레벨 1(끝)' 카테고리의 다른 글
[프로그래머스 스킬체크 레벨 1] 나누어 떨어지는 숫자 배열 풀이 및 설명 - 자바스크립트[JavaScript] (0) | 2021.07.15 |
---|---|
[프로그래머스 스킬체크 레벨 1] 2016년 풀이 및 설명 - 자바스크립트[JavaScript] (0) | 2021.07.15 |
[프로그래머스 스킬체크 레벨 1] K번째 수 풀이 및 설명 - 자바스크립트[JavaScript] (0) | 2021.07.15 |
[프로그래머스 스킬체크 레벨 1] 이상한 문자 만들기 풀이 및 설명 - 자바스크립트[JavaScript] (0) | 2021.07.14 |
[프로그래머스 스킬체크 레벨 1] 약수의 합 풀이 및 설명 - 자바스크립트[JavaScript] (0) | 2021.07.14 |
댓글