CSS&JS/코딩테스트

[JS100제]70번 행렬곱하기 관련

arancia_ 2021. 11. 26. 17:27

답변에 나온것은 2x2 외의 행렬에 취약하여, 자꾸 에러를 뿜길래..
내가 짠 코드를 제공합니다

70번 행렬 곱하기 문제 링크
70번 행렬 곱하기 해설 링크

그리고 유용한 사이트 행렬계산기

 

행렬 계산기

이 계산기의 도움으로 행렬 행렬식, 계수, 행렬의 거듭 제곱, 행렬의 합과 곱셈을 구하고 역행렬을 계산할 수 있습니다. 행렬 요소를 입력하고 버튼을 클릭하십시오.

matrixcalc.org

여기서 결과값 검증해가면서 해봤다

우선 해설 코드대로 하면 다음 행렬을 계산하지 못한다 

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 = [[12], [24]]; //2x2
const b = [[10], [03]]; //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