프로그래머스 JavaScript 행렬의 곱셈

0min·2021년 7월 6일
0

프로그래머스 LV2 행렬의곱셈

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

언어

자바스크립트(JavaScript)

코드

function solution(arr1, arr2) {
  let answer = [];
  
  for(let i = 0; i < arr1.length; i++) {
    answer.push([]);
    for(let j = 0; j < arr2[0].length; j++) {
      let sum = 0;
      for(let n = 0; n < arr2.length; n++) {
        sum += (arr1[i][n] * arr2[n][j]);
      }
      answer[i].push(sum);
    }
  }
  return answer;
}

// j의 한계를 잘못 지정해서 진짜 1시간이 넘게 걸렸다.. j야😥

풀이

0.
행렬의 곱셉을 우선 알아야 한다.
arr1이 mn인행렬 arr2가 nk인 행렬이라고 가정하였을 때
arr1의 열의 수와 arr2의 행의 수가 같아야 곱할 수 있다.

문제에서는 곱셈이 가능한 경우만 주어진다고 되어있다.

1.
arr1의 행과 arr2의 열을 곱해준다.

i 는 arr1의 행이 될것이다.
j 는 arr2의 열이 될것이고
n 은 arr1의 열 임과 동시에 arr2의 행이 된다.

arr1의 각 행을 arr2의 모든 열에 곱 해주어 answer의 행으로 만들어 줄 것이다.

2.
💥index값으로 표현할 것이기 때문에 1행이아닌 0행 시작하는걸로 표현할 것이다.

arr1[i][n] * arr2[n][j]의 값을 sum에 더해준다.
이 때 for(i)안에 for(j)가 있고 for(n)이 제일 안쪽이기 때문에 n부터 정해놓은 한계까지 증가한다.
그렇게 되면 sum 은 answer의 i행 j열의 값이 되고 그것을 answer[i]에 집어 넣어준다
이 과정을 j의 한계점까지 반복하였으면 answer[i]의 값이 완성 되었을 것이고

3.
그 이후 i 값을 증가시켜주면서 2번 과정을 반복한다.

profile
🐔이되고 싶은 🐥..

0개의 댓글

관련 채용 정보