답변에 나온것은 2x2 외의 행렬에 취약하여, 자꾸 에러를 뿜길래..
내가 짠 코드를 제공합니다
70번 행렬 곱하기 문제 링크
70번 행렬 곱하기 해설 링크
그리고 유용한 사이트 행렬계산기
여기서 결과값 검증해가면서 해봤다
우선 해설 코드대로 하면 다음 행렬을 계산하지 못한다
1
2
3
4
5
|
const test_1 = [[1,2,3]];
const test_2 = [[1,1,1,1,1],[2,2,2,2,2],[3,3,3,3,3]];
solution(test_1,test_2); //에러 발생!
//이상 값 : [14,14,14,14,14]
|
cs |
그래서 나는 이렇게 짰습니다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
|
function my_answer(a,b){
//0. 가능한지 검사한다
if(a[0].length != b.length){
console.log('계산불가능');
return;}
//1. 계산 시작
const final = [];
let row_result = [];
let sum = 0;
for(let aRow of a){
//a의 각 아이템[idx]를 b의 row의 [idx]와 곱한뒤 더한다
for(let col_num = 0; col_num < b[0].length; col_num++){
for(let a_idx=0; a_idx<aRow.length; a_idx++){
sum += (aRow[a_idx] * b[a_idx][col_num]);
}//for
row_result.push(sum);
sum = 0;
}//for
final.push(row_result);
row_result = [];
}//for
console.log(final);
}//myAnswer
const a = [[1, 2], [2, 4]]; //2x2
const b = [[1, 0], [0, 3]]; //2x2
const c = [[1,2],[3,4],[5,6]]; //3x2
const d = [[1],[2]] //2x1;
const e = [[1,2,3],[1,2,3]] //2x3;
const test_1 = [[1,2,3]]; // 1x3
const test_2 = [[1,1,1,1,1],[2,2,2,2,2],[3,3,3,3,3]]; //3x5
my_answer(a,b);
my_answer([[1,2,3]],[[1,2],[3,4]]);
my_answer(c,d);
my_answer(a,e);
my_answer(test_1,test_2); //1x3 3x5
|
cs |
'CSS&JS > 코딩테스트' 카테고리의 다른 글
[JS100제] 98.청길이의 패션대회 (0) | 2021.12.02 |
---|---|
[JS100제]97. 택배 배달 (0) | 2021.12.02 |
[JS100제]95번 도장찍기 (0) | 2021.12.02 |
[JS 100제] 무료 JavaScript 100문제 및 해설 (0) | 2021.11.26 |