티스토리 뷰
https://school.programmers.co.kr/learn/courses/30/lessons/12949
1. 풀이
- n x m 행렬A과 m * b 행렬B를 곱한 행렬은 n * b (m이 동일해야 곱셈 가능)
- 3중 for문을 사용하자.
행렬A의 첫 번째 행인 [1, 1, 1]이 행렬B의 각 컬럼( [1, 4, 7], [2, 5, 8], [3, 6, 8])과 연산된다. 따라서 일단 행렬A의 행에 접근하는 for문이 필요하다.
그리곤 이제 하나의 행에 대해 3개의 열이 연산되어야 하므로, 컬럼을 인덱싱하는 반복문이 필요하다.
마지막으론 행과 열의 인덱싱용 반복문이 필요하다. 예를 들어 [1, 1, 1] 행과 [1, 4, 7] 열을 계산한다고 하면, 행의 각 위치는 (0, 0), (0, 1), (0, 2)이고, 열의 각 위치는 (0, 0), (1, 0), (2, 0)인데, 이때 0, 1, 2로 늘어나는 인덱스를 나타내기 위해 사용한다.
2. 정답 코드
def solution(arr1, arr2):
x = len(arr2)
y = len(arr2[0])
answer = []
for row in arr1:
temp = [0] * y
for i in range(y):
for j in range(x):
temp[i] += row[j] * arr2[j][i]
answer.append(temp)
return answer
728x90
'코딩 테스트 > 프로그래머스' 카테고리의 다른 글
[프로그래머스] 택배상자 파이썬 풀이 (0) | 2024.06.03 |
---|---|
[프로그래머스] 가장 먼 노드 파이썬 풀이 (0) | 2024.04.01 |
[프로그래머스] 섬 연결하기 파이썬 풀이 (1) | 2024.03.29 |
[프로그래머스] 구명보트 파이썬 풀이 (0) | 2024.03.29 |
[프로그래머스] 여행경로 파이썬 풀이 (0) | 2024.03.28 |