나의 풀이 → 다른 사람 풀이와 비슷한다.
def solution(arr1, arr2):
#두 행렬을 파라미터로 받아서, 곱셈을 한 결과값의 형태를 가지고, 모든 값이 0인 행렬을 만든다.
#column와 column은 여기서 아무 역할도 안함
#예를 들어 arr1 2x3 이고 arr2가 3x2인 경우 배열을 2x2배열이 생겨야 한다.
row=len(arr1)
column=len(arr2[0])
answer =[[0 for col in range(column)] for row in range(row)]
#정답 행렬(answer)을 2중 for문을 통해 순회하면서, 각 요소의 값을 채운다.
#len(answer)을 len(arr1)으로 바꾸어도 무방
for i in range(len(answer)):
#len(answer[i])를 len(arr2[0])로 바꾸어도 무방
for j in range(len(answer[i])):
#k는 첫번째 행렬(arr1)의 열(column)이거나 두번째 행렬(arr2)의 행(row)과 같다.
#따라서 len(arr1[0])을 len(arr2)로 바꾸어도 무방
for k in range(len(arr1[0])):
answer[i][j] += arr1[i][k] * arr2[k][j]
return answer
▶arr1의 행(row)이 고정되고, arr2의 열(column)이 고정된 상태에서 k가 변한다고 생각하면 제일 편하다.
이해를 돕기 위한 그림
'프로그래머스(파이썬) > LV.2(파이썬)' 카테고리의 다른 글
위장★★→ Counter(), reduce() 모든 요소의 곱 + 모든 요소에 +1 (0) | 2022.12.27 |
---|---|
괄호 회전하기★★→ rotate() 사용O + rotate() 사용X 문자열 밀기 (0) | 2022.12.27 |
1차 캐시→체크리스트X, OrderedDict()★★ (0) | 2022.12.26 |
멀리 뛰기 → 점화식★★ + 재귀함수★★ + 피보나치수열 (0) | 2022.12.25 |
예상 대진표 ★★ (0) | 2022.12.25 |