✏️ 문제 설명
행렬의 덧셈은 행과 열의 크기가 같은 두 행렬의 같은 행, 같은 열의 값을 서로 더한 결과가 됩니다. 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) {
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]);
}
}
return result;
}
위 방식으로 풀면 테스트 케이스는 통과하는데 런타임 에러로 실패한다.
function solution(arr1, arr2) {
let result = [];
for (let i = 0; i < arr1.length; i++) {
let sum = [];
for (let j = 0; j < arr1[i].length; j++) {
sum.push(arr1[i][j] + arr2[i][j]);
}
result.push(sum);
}
return result;
}
[]를 따로 선언해 묶어 넣어주면 이렇게 바꾸면 통과한다. 2중 for문으로 행렬의 덧셈을 해주는 방식.
- 다른 풀이
function solution(arr1, arr2) {
return arr1.map((list1, list2) => list1.map((num, idx) => num + arr2[list2][idx]));
}
map()의 parameter도 또 map을 써주는 방식이 가능하다.
// Syntax
// Arrow function
map((element) => { /* … */ })
map((element, index) => { /* … */ })
map((element, index, array) => { /* … */ })
// Callback function
map(callbackFn)
map(callbackFn, thisArg)
// Inline callback function
map(function (element) { /* … */ })
map(function (element, index) { /* … */ })
map(function (element, index, array) { /* … */ })
map(function (element, index, array) { /* … */ }, thisArg)
🙂 공부하며 정리하는 글입니다. 공감과 피드백 환영합니다.
'Algorithms > 코테 문풀' 카테고리의 다른 글
[프로그래머스] 숫자의 표현 - JavaScript (0) | 2023.01.24 |
---|---|
[프로그래머스] 최대공약수와 최소공배수 - JavaScript (0) | 2023.01.23 |
[프로그래머스] 핸드폰 번호 가리기 - JavaScript / repeat(), fill(), 정규 표현식 풀이 (0) | 2023.01.21 |
[프로그래머스] JadenCase 문자열 만들기 - JavaScript / substring(), slice(), charAt() + 레거시(lagacy)란? (0) | 2023.01.20 |
[프로그래머스] 두 정수 사이의 합 - JavaScript / 등차수열의 합 공식 (0) | 2023.01.19 |