문제 링크 : 행렬의 곱셈
우선 나는 알고리즘을 공부해본 적도 없는 아주 얕은 개발자기 때문에 이제는 정말 알고리즘 / 자료구조를 공부하고 싶어서 시작하게 됐다.
2차원 행렬 arr1과 arr2를 입력받아, arr1에 arr2를 곱한 결과를 반환하는 함수, solution을 완성해주세요.
행렬 arr1, arr2의 행과 열의 길이는 2 이상 100 이하입니다.
행렬 arr1, arr2의 원소는 -10 이상 20 이하인 자연수입니다.
곱할 수 있는 배열만 주어집니다.
사실 나는 행렬의 곱셈이 뭔지 몰라서 처음에 뇌가 멈추는 줄 알았다.
하지만 다행히도 노트에 계속 적으면서 보다보니 어느정도 규칙이 보였다.
(@nowgnoesiohc이 행렬곱셈에 대해 오지게 명강의도 해줬다)
[3*2] / [2*4] 모양의 배열이 주어진다면
- arr1의 행 → (3)
- arr2의 열 → (4)
- arr1의 열(혹은 arr2의 행) → (2)
행열곱셈이 끝난 후 최종 모양은 [3*4] 여야 한다.
function solution(arr1, arr2) {
const answer = []
for( let i = 0 ; i < arr1.length; i++ ){
const temp1 = []
for( let ii = 0; ii < arr2[0].length; ii++){
let temp2 = 0
for(let iii = 0; iii < arr1[0].length; iii++){
temp2 += arr1[i][iii] * arr2[iii][ii]
}
temp1.push(temp2)
}
answer.push(temp1)
}
return answer
}
for문 여러개 돌릴때 로마자 사용도 @nowgnoesiohc가 릴스 보내줘서 따라함