한 걸음씩 기록하며
[프로그래머스 코딩테스트] 행렬의 덧셈 본문
[행렬의 덧셈]
문제 설명 :
행렬의 덧셈은 행과 열의 크기가 같은 두 행렬의 같은 행, 같은 열의 값을 서로 더한 결과가 됩니다. 2개의 행렬 arr1과 arr2를 입력받아, 행렬 덧셈의 결과를 반환하는 함수, solution을 완성해주세요.
⛏제한 조건
- 행렬 arr1, arr2의 행과 열의 길이는 500을 넘지 않습니다.
📁 입출력 예시
👉🏻 답안
function solution(arr1, arr2) {
let answer = [];
for (let i = 0; i < arr1.length; i++) { // arr1 만큼 돌리기
let newArr = []; // answer [i] = []; 로 대체 가능 (초기화)
for (let j = 0; j < arr1[i].length; j++) { // arr1[i] 길이만큼 돌리기
newArr.push(arr1[i][j] + arr2[i][j]); // newArr에 push
} answer.push(newArr) // newArr을 answer배열에 push
} return answer;
}
📑 간단한 설명
answer로 배열을 선언하고, 이중 for문으로 배열을 더하는 것으로 하였습니다.
let newArr은 answer[i] = []; 로 대체할 수도 있습니다.
.push() 는 해당 배열 끝에 ()을 추가하는 함수입니다.
💪🏻 공부하면 좋을 답안
function sumMatrix(A,B){
return A.map(function(v,i){
return (typeof(v)=="object")? sumMatrix(v,B[i]):v+B[i];
});
}
- 위의 arr1, arr2를 sumMatrix의 매개변수라고 한다면
- arr1.map 메서드를 통해서 새로운 배열(return) 만든다.
- arr1.map의 매개변수는 annonymous function이고, 해당 함수는 v(값), i(인덱스) 라는 매개변수를 받음
- 이 매개변수를 (typeof(값)=="object")? 이라는 조건문을 통해서, true면 sumMatrix(v,B[1]), false면 v+B[i]로 받는다
- .map 배열 안에 있는 것들을 꺼내서 다시 배열로 만든다. 함수를 하나 더 넣은 것은 배열을 한번 더 깨뜨리기 위함이다로 이해하면 좋을듯..
- map과 reduce 관련 글을 따로 올리는게 좋을 것 같습니다. 어렵네요 😑
'알고리즘 & 코딩테스트' 카테고리의 다른 글
[프로그래머스 코딩테스트] 부족한 금액 계산하기 (0) | 2022.01.15 |
---|---|
[프로그래머스 코딩테스트] x만큼 간격이 있는 n개의 숫자 (0) | 2022.01.15 |
[프로그래머스 코딩테스트] 핸드폰 번호 가리기 (0) | 2022.01.15 |
[프로그래머스 코딩테스트] 평균 구하기 (0) | 2022.01.15 |
[프로그래머스 코딩테스트] 음양 더하기 (0) | 2022.01.14 |
Comments