🔗 Problem Link
Level 2. 행렬의 곱셈
❔Thinking
- 행렬 곱셈의 결과를 list로 출력한다.
- 실제 행렬의 곱셈의 순서에 따라 코드를 작성한다.
💻Solution
- 실제 계산과정 그대로 옮긴 풀이
def solution(arr1, arr2):
answer = []
for a in arr1:
row_result = []
for i in range(len(arr2[0])):
tmp = []
for b in arr2:
tmp += [b[i]]
row_result.append(sum([x*y for x,y in zip(a, tmp)]))
answer.append(row_result)
return answer
- 행과 열을 바꾸어 계산하는 풀이
def solution(arr1, arr2):
answer = []
for a in arr1:
tmp = []
for b in list(zip(*arr2)):
tmp.append(sum([x*y for x,y in zip(a,b)]))
answer.append(tmp)
return answer
🗝️keypoint
- *를 붙이면 unpacking이 일어난다. 그 후 zip을 하면 list의 행과 열을 바꿀 수 있다.
a = [[1,2,3], [1,2,3]]
for i in zip(*a):
print(i)
(1,1) (2,2) (3,3)