Programmers/프로그래머스-행렬의 곱셈-python

Ne5s·2022년 8월 31일
0

알고리즘 문제풀기

목록 보기
25/31
post-thumbnail
post-custom-banner

📖 문제

🎈 풀이

  • 행렬 곱을 생각해보니깐 행렬 곱의 식이 [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곱한 것을 더해주었다.
  • 행렬 관련 문제를 쓸 때 매우 유용할 것 같다.👍👍👍

💡 문제 출처

프로그래머스

profile
초보개발자
post-custom-banner

0개의 댓글