Odds and Ends
프로그래머스 : 행렬의 곱셈 [파이썬] 본문
문제 설명
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) A행 수 * B열 수 가 행렬 곱셈 결과이기 때문에 앞 두개의 포문을 에이행, 비열로 배치한다.
2) 세번째 포문은 A의 행으로 배치한다. B의 열을 곱하는 순서가 B의 행만큼 진행되기 때문이다.
3) 더한 sum 값을 temp 배열에 넣어준다. + 썸 초기화
4) 배열이 완성되면 temp를 answer 배열에 넣어준다. + temp 초기화
def solution(arr1, arr2):
answer = []
sum = 0
temp = []
# 행렬곱 결과 배열은 N(arr1의 행)*M(arr2의 열)이다.
for i in range(len(arr1)):
for k in range(len(arr2[0])):
for j in range(len(arr2)):
sum = sum + arr1[i][j] * arr2[j][k]
temp.append(sum)
sum=0
answer.append(temp)
temp = []
return answer
- ** 행렬곱셈 개념을 적용해야해서 좀 어려웠다.
728x90
'코딩 테스트' 카테고리의 다른 글
백준 : 1476번 현수막 [DFS, 파이썬] (0) | 2022.09.24 |
---|---|
프로그래머스 : 하샤드 수 [파이썬] (0) | 2022.09.24 |
프로그래머스 : 행렬과 연산 [2022 KAKAO TECH INTERNSHIP, 파이썬, 레벨 4] (0) | 2022.09.21 |
프로그래머스 : 신고 결과 받기 [파이썬, python] (1) | 2022.08.22 |
프로그래머스 : [1차] 추석 트래픽 [파이썬, python] (0) | 2022.08.22 |