관리 메뉴

공부기록용

프로그래머스(LV 1. 행렬의 덧셈) 본문

✍️문제풀기✍️/JS_Programmers school

프로그래머스(LV 1. 행렬의 덧셈)

과부하가즈아 2023. 6. 19. 12:55

LV 1. 행렬의 덧셈

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

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

문제 설명

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

제한 조건
  • 행렬 arr1, arr2의 행과 열의 길이는 500을 넘지 않습니다.
입출력 예
  • arr1 = arr1
  • arr2 = [[3,4],[5,6]]
  • return = [[4,6],[7,9]]
<해결>
function solution(arr1, arr2) {
    var answer = [];

    for (let i = 0; i < arr1.length; i++) {

        let sum = [];

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

        answer.push(sum);
    }
    return answer;
}

console.log(solution([[1,2],[2,3]], [[3,4],[5,6]]))​
> 중첩배열에서 요소 꺼내기 arr.[ ][ ]

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

 

🔴배운거
> .map()

> map() 메서드는 배열 내의 모든 요소 각각에 대하여 주어진 함수를 호출한 결과를 모아 새로운 배열을 반환한다.
(배열의 각 요소에 대해 실행한 callback함수의)
arr.map(callback(currentValue[, index[, array]])[, thisArg])

callback: 새로운 배열 요소를 생성하는 함수. 다음 세 가지 인수를 가진다.
*currentValue: 처리할 현재 요소
*index(선택사항): 처리할 현재 요소의 인덱스
*array(선택사항): map()을 호출한 배열

thisArg(선택사항): callback을 실행할 때 this로 사용되는 값

var numbers = [1, 4, 9];
var doubles = numbers.map(function(num) {
  return num * 2;
});
// doubles는 이제 [2, 8, 18]
// numbers는 그대로 [1, 4, 9]​

function sumMatrix(A, B) {
  return A.map((a, i) => a.map((b, j) => b + B[i][j]));
}

> arr1(2중 배열)의 각 행(배열)을 a라고 하고, 또 그 a(배열)의 각 요소를 b라고 하고,
> 각 b에 arr2(2중 배열)의 각 요소를 더해주면 된다

Comments