Programmers - 행렬의 곱셈(Python)
문제 설명
2차원 행렬 arr1과 arr2를 입력받아, arr1에 arr2를 곱한 결과를 반환하는 함수, solution을 완성해주세요.
제한 조건
- 행렬 arr1, arr2의 행과 열의 길이는 2 이상 100 이하입니다.
- 행렬 arr1, arr2의 원소는 -10 이상 20 이하인 자연수입니다.
- 곱할 수 있는 배열만 주어집니다.
입출력 예
arr1 | arr2 | return |
---|---|---|
[[1, 4], [3, 2], [4, 1]] | [[3, 3], [3, 3]] | [[15, 15], [15, 15], [15, 15]] |
[[2, 3, 2], [4, 2, 4], [3, 1, 4]] | [[5, 4, 3], [2, 4, 1], [3, 1, 1]] | [[22, 22, 11], [36, 28, 18], [29, 20, 14]] |
✍ 코드
# (1)
def solution(arr1, arr2):
# (2)
answer = [ len(arr2[0])*[0] for i in range (len(arr1)) ]
for i in range (len(answer)):
for j in range (len(answer[i])):
for k in range (len(arr1[i])):
answer[i][j] += arr1[i][k]*arr2[k][j]
return answer
arr1 = [[2, 3, 2], [4, 2, 4], [3, 1, 4]]
arr2 = [[5, 4, 3], [2, 4, 1], [3, 1, 1]]
print(solution(arr1, arr2)) # 결과 예 : [[22, 22, 11], [36, 28, 18], [29, 20, 14]]
# (1)
def solution(arr1, arr2):
# (2)
answer = [ len(arr2[0])*[0] for i in range (len(arr1)) ]
for i in range (len(answer)):
for j in range (len(answer[i])):
for k in range (len(arr1[i])):
answer[i][j] += arr1[i][k]*arr2[k][j]
return answer
arr1 = [[2, 3, 2], [4, 2, 4], [3, 1, 4]]
arr2 = [[5, 4, 3], [2, 4, 1], [3, 1, 1]]
print(solution(arr1, arr2)) # 결과 예 : [[22, 22, 11], [36, 28, 18], [29, 20, 14]]
(1) : 기본적으로 arr1이 만약 m n의 사이즈이고 arr2가 만약 a b의 사이즈라고 가정한다면, 두 행렬의 곱 결과 사이즈는 m * b이다.
(2) : 리턴할 값 answer의 크기를 먼저 지정해줌
📝 결과
😃 느낀점
- 행렬이라는 말은 들어본 적은 있지만 행렬의 곱의 원리가 어떻게 작용되는지는 몰라서 인터넷을 검색한 후 행렬의 곱을 구하는 방식을 파악했다. 수학적인 문제가 나올 때를 대비해서 코딩 테스트에 자주 나오는 수학은 공부를 해야겠다는 생각이 들었다.
👍 Irish의 모든 코드 보기
-> Irish Github
Author And Source
이 문제에 관하여(Programmers - 행렬의 곱셈(Python)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@irish/Programmers-행렬의-곱셈Python저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)