728x90
반응형
이 포스팅은 구름edu 의 파이썬으로 배우는 알고리즘 강의를 기반으로 코드를 작성했음을 밝힙니다.
문제 : 두 n X n 행렬의 곱을 구하시오. ( 정방행렬 곱셈)
- A = [[2,3],[4,1]]
- B = [[5,7],[6,8]]
- C = AxB
출력 사례 : [[28,38],[26,36]]
-----------------------------------------------------------------------
알고리즘에 대해 생각 하기 전,
C=[[0]*n for _ in range(n)]
파이썬을 접한지 얼마 되지 않으신 분들은 위의 코드가 해석이 조금 힘들 수도 있다고 생각해,
저 코드부터 설명드리겠습니다.
만약 n 이 2 라면, 코드의 빨간색 부분이 2번 반복되어 [0,0] 이라는 리스트를 만들 것입니다.
그리고 이것을 for _ in range(n) 이 2번 반복하게 되어 마침내 [[0,0],[0,0]] 이라는 행렬을 만듭니다.
행렬의 곱셈 문제를 풀 때는 당연히 행렬의 곱셈이 어떤 식으로 이루어지는지 알아야겠죠?
행렬의 곱은 다음과 같이 이루어집니다.
본격적으로 코드를 작성하려면, 아까 제가 위에서 설명한 코드로 C 를 초기화 해주며 시작하면 됩니다.
def matrixmult(A,B):
n = len(A)
C=[[0]*n for _ in range(n)]
for i in range(n):
for j in range(n):
for k in range(n):
C[i][j]+=A[i][k]*B[k][j]
return C
A = [[2,3],[4,1]]
B = [[5,7],[6,8]]
print('A = ',A)
print('B = ',B)
C=matrixmult(A,B)
print('C = ',C)
728x90
반응형
'Programming > Python' 카테고리의 다른 글
[ Python ] 파이썬 피보나치 수열(Fibonacci)코드 (0) | 2021.01.07 |
---|---|
[ Python ] 파이썬 이분 검색(Binary Search) 코드 | 순차 탐색 vs 이분 검색 (0) | 2021.01.07 |
[ Python ] 파이썬 교환정렬 코드 | 파이썬에서 swap 하기 (0) | 2021.01.07 |
[ Python ] 파이썬 순차 탐색 문제 코드 | 순차 탐색 알고리즘 | 파이썬 알고리즘 (0) | 2021.01.07 |
[ Python ] 백준 10817번 세 수 풀이 (0) | 2020.12.29 |