10. 행렬의 곱셈
Algorithm - Level 2
- 풀이
1. 단순하게 for문을 사용하여 접근한다.
2. arr1의 행과 arr2의 열이 연산의 대상
-> 첫 번째 for문은 arr1의 행의 크기, 두 번째 for문은 arr2의 열의 크기만큼 접근
3. arr1 열과 arr2의 행은 같아야 연산이 가능
-> 임의의 변수 하나로 두 열과 행을 접근 가능
4. 결과는 arr1의 행과 arr2의 열의 크기를 갖는 모양
-> arr1 : AxM, arr2 : NxB => result : AxB
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | #include <string> #include <vector> using namespace std; vector<vector<int>> solution(vector<vector<int>> arr1, vector<vector<int>> arr2) { vector<vector<int>> answer(arr1.size(), vector<int>(arr2[0].size(), 0)); int tmp; for(int a=0; a<arr1.size(); ++a){ for(int b=0; b<arr2[0].size(); ++b){ tmp = 0; for(int i=0; i<arr1[0].size(); ++i){ tmp += (arr1[a][i] * arr2[i][b]); } answer[a][b] = tmp; } } return answer; } | cs |
'Study > Algorithm' 카테고리의 다른 글
[Level 2] 12. N개의 최소공배수 (0) | 2018.08.01 |
---|---|
[Level 2] 11. JadenCase (0) | 2018.07.30 |
[Level 2] 9. 피보나치 수 (0) | 2018.07.27 |
[Level 2] 8. 최소값 만들기 (0) | 2018.07.26 |
[Level 2] 7. 최대값과 최소값 (0) | 2018.07.24 |