본문 바로가기
프로그래머스/Python

[프로그래머스] 행렬의 곱셈 - 파이썬(Python) - 우당탕탕 개발자 되기 프로젝트

by 우당탕탕 개발자 2023. 7. 19.
728x90
반응형

 

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

1. 문제 설명

2. 풀이과정

  1. 먼저 모든 행렬의 값이 0인 결과 행렬을 생성한다. 행렬의 곱셈 결과는 앞 행렬의 행의 개수 for i in range(len(arr1))
  2. 행별로 값을 저장할 리스트를 생성한다. li = []
  3. 뒤 행렬의 열의 개수로 결과가 반환된다. for _ in range(len(arr2[0])): li.append(0)
  4. 행별로 열의 값을 저장한 리스트를 추가한다. answer.append(li)
  5. 행렬의 곱셈을 하기 위해선 3중 for문이 필요하다. 결과의 위치 원소에 대한 결과는 앞 행렬의 행별로, 뒤 행렬의 열별로 각 위치를 곱하고 그 값을 더해주면 된다.
  6. 앞 행렬의 행의 위치에 대한 for 문 for row in range(len(arr1))
  7. 뒤 행렬의 열의 위치에 대한 for 문 for col in range(len(arr2[0]))
  8. 곱할 위치에 대한 for 문 for i in range(len(arr2))
  9. 각 위치별 값을 곱하여 해당 위치의 값에 더해준다. answer[row][col] += arr1[row][i] * arr2[i][col]
반응형

3. 소스코드

def solution(arr1, arr2):
    answer = []
    for i in range(len(arr1)):
        li = []
        for _ in range(len(arr2[0])):
            li.append(0)
        
        answer.append(li)

    for row in range(len(arr1)):
         for col in range(len(arr2[0])):
              for i in range(len(arr2)):
                   answer[row][col] += arr1[row][i] * arr2[i][col]
        
    return answer
728x90
반응형