- 문제 : https://school.programmers.co.kr/learn/courses/30/lessons/12949

 

Lv2 문제다!

 

문제 이해

정답 행렬의 (i,j) 원소는 arr1[i][열] 와 arr2[행][j]의 곱의 합이다 

각 리스트를 곱하기도 해야하고, 그 값을 누적도 해야하기 때문에 3중 for문으로 진행한다 

 

이중 for문에 for k 문 추가해서 하는 거 생각했는데, 안될 것 같아서 다른 방법으로 푸느라 삽질 엄청 했다ㅠ

이차 행렬은 이렇게 진행하는 걸로 기억해둬야겠다 

 

- 정답 풀이: 

 

def solution(arr1, arr2):
    n = len(arr1)
    m = len(arr2[0])
    answer = [[0] * m for _ in range(n)]
    for i in range(n):
        for j in range(m):
            for k in range(len(arr2)):
                answer[i][j] += arr1[i][k] * arr2[k][j]
                
    return answer

 

- 삽질한 풀이

이렇게 풀지 말자!!

 

def change(arr2, j, m):
    temp = []
    for i in range(m):
        temp.append(arr2[i][j])
        
    return temp 

def matrix(arr1, arr2):
    num = 0
    for i in range(len(arr1)):
        num += arr1[i] * arr2[i]
    return num
            
def solution(arr1, arr2):
    a, b = len(arr1), len(arr1[0])
    c, d = len(arr2), len(arr2[0])
    flag = True
    if b == c:
        n, m = a, d
    elif d == a:
        flag = False
        n, m = c, b
        
    answer = [[0] * m for _ in range(n)]
    
    if flag: 
        for i in range(n):
            for j in range(m):
                temp = change(arr2, j, m)
                answer[i][j] = matrix(arr1[i], temp)
    else:
        for i in range(n):
            for j in range(m):
                temp = change(arr1, j, m)
                answer[i][j] = matrix(arr2[i], temp)
            
    return answer

+ Recent posts