[Javascript] 프로그래머스 Level 2 _ 행렬의 곱셈
👇🏻

👇🏻
시행착오
( + 코드를 작성하면서 든 생각들.)
✏️ 제출 코드
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
function solution(arr1, arr2) { | |
const m = arr1.length; | |
const k = arr1[0].length; | |
const n = arr2[0].length; | |
let answer = []; | |
for(let i = 0; i < m; i++){ | |
let temp = []; | |
for(let j = 0; j < n; j++){ | |
let x = 0; | |
for(let n = 0; n < k; n++){ | |
x += arr1[i][n] * arr2[n][j]; | |
} | |
temp.push(x); | |
} | |
answer.push(temp); | |
} | |
return answer; | |
} |
문제를 풀기 위해서는 행렬의 곱셈에 대해 알고 있어야 한다!
행렬의 곱셈은
곱하는 행렬 A의 열의 개수와 행렬 B의 행의 개수가 같은 경우에만 가능하다.
즉, (m*k) 행렬과 (k*n) 행렬을 곱했을 때 (m*n)의 행렬이 만들어지게 된다.
처음에는 m*n의 행렬을 미리 만들고 값을 대입하려고 했는데,
두 번의 반복되는 과정이 생기는 것 같아서 배열만 생성한 뒤,
반복문을 통해 n개의 요소를 가진 배열을 m번 생성한 뒤 push()해서 행렬을 만들었다!
다른 분들을 map()과 reduce()도 사용하셨던데 그것도 도전해봐야겠다...!
⚠️ 아래 내용은 모두 개인적인 참고 / 기록을 위한 용도입니다. 참고해주시고 편안하게 봐주세요 :) ⚠️
*** 혹시라도 잘못된 정보가 있다면 언제든지 알려주시면 감사하겠습니다 ! ***
'Programmers > Level 2' 카테고리의 다른 글
[Javascript] 프로그래머스 : 기능 개발 (0) | 2021.08.22 |
---|---|
[Javascript] 프로그래머스 : 올바른 괄호 (0) | 2021.08.22 |
[Javascript] 프로그래머스 : 프린터 (0) | 2021.08.19 |
[Javascript] 프로그래머스 : 최솟값 만들기 (0) | 2021.08.18 |
[Javascript] 프로그래머스 : 최댓값과 최솟값 (0) | 2021.08.18 |