Programmers/프로그래머스-행렬의 곱셈-python
📖 문제
🎈 풀이
- 행렬 곱을 생각해보니깐 행렬 곱의 식이 [n*j] 행렬곱 [j*m] 이라면 결과가 [n*m]이 되므로
(여기서 [n*j], [j*m]은 행렬의 크기)
- 계산이 되는 경우를 잘 생각해보면 행렬곱 결과는
해당되는 것끼리 j번만큼 곱한 값들을 더하게 되는데,
결과 array 안의 내부 array에는 m개만큼 값이 들어있고
결과 array 안에는 n개만큼의 배열이 들어있다.
- 이것을 이용하여 3중 for문을 작성하여 처리하였다.
💻 코드
- numpy 라이브러리를 사용하여 행렬곱을 처리할 수 있었는데, 문제조건이 arr1, arr2이 모두 2차원 행렬이라고 하였기 때문에 가능했다.
- numpy.matmul() 이나 numpy.dot()을 이용하면 2차원 행렬곱셈이 가능하다.
- 심지어 성능도.. 3중 for문이라 원래도 느리겠지만, 훨씬 잘 나온다....음...
✨ 실행 결과
💊 탑👍 코드
- ....??????
- zip(*B)를 쓰면 [[1,2],[3,4],[5,6]] : [행,행,행] -> [(1,3,5),(2,4,6)] : [열,열] 로 바꿔준다!!!!
- *B를 쓰면 가장 바깥 [] 를 날려준다. -> [1,2][3,4] [5,6] 이 됨
이것을 zip에 넣어주면 -> (1,3,5), (2,4,6) 이 된다.
- sum을 통해 a,b곱한 것을 더해주었다.
- 행렬 관련 문제를 쓸 때 매우 유용할 것 같다.👍👍👍
💡 문제 출처
프로그래머스