문제 설명
2차원 행렬 arr1과 arr2를 입력받아, arr1에 arr2를 곱한 결과를 반환하는 함수, solution을 완성해주세요.
제한 조건
- 행렬 arr1, arr2의 행과 열의 길이는 2 이상 100 이하입니다.
- 행렬 arr1, arr2의 원소는 -10 이상 20 이하인 자연수입니다.
- 곱할 수 있는 배열만 주어집니다.
풀이
def solution(A, B):
return [[sum(i*j for i,j in zip(A_row,B_col))for B_col in zip(*B)] for A_row in A]
def solution(A, B):
answer = [[0 for _ in range(len(B[0]))] for _ in range(len(A))]
for i in range(len(A)):
for j in range(len(B[0])):
for k in range(len(A[1])):
answer[i][j] += (A[i][k]*B[k][j])
return answer
느낀 점
행렬의 곱셈. 중학교 때 배우던 문제 같은데 코딩으로 풀려면 그 공식을 이해해야 한다. 3중 포문으로 풀 수 있었고, 리스트 컴프리헨션으로 한 줄로 zip을 이용하여서 풀 수도 있다. 위키백과를 보면서 참고했다.
'Algorithm' 카테고리의 다른 글
[프로그래머스] N개의 최소 공배수 (0) | 2020.11.23 |
---|---|
[프로그래머스] JadenCase 문자열 만들기 (0) | 2020.11.23 |
[프로그래머스] 최솟값 만들기 (0) | 2020.11.23 |
[BOJ/백준] 2805번 나무자르기 (0) | 2020.11.23 |
[프로그래머스] 프린터 (0) | 2020.11.23 |