애플파이썬
[프로그래머스] Lv.2 행렬의 곱셈 (파이썬) 본문
https://school.programmers.co.kr/learn/courses/30/lessons/12949
프로그래머스
SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프
programmers.co.kr
문제 설명
2차원 행렬 arr1과 arr2를 입력받아, arr1에 arr2를 곱한 결과를 반환하는 함수, solution을 완성해주세요.
제한 조건- 행렬 arr1, arr2의 행과 열의 길이는 2 이상 100 이하입니다.
- 행렬 arr1, arr2의 원소는 -10 이상 20 이하인 자연수입니다.
- 곱할 수 있는 배열만 주어집니다.
나의 풀이
def solution(arr1, arr2):
answer = [[0]*len(arr2[0]) for _ in range(len(arr1))]
for i in range(len(arr1)):
for j in range(len(arr2[0])):
for k in range(len(arr1[0])):
answer[i][j] += arr1[i][k]*arr2[k][j]
return answer
- 와 행렬 곱셈 진짜 오랜만,,, 그래서 까먹음 ㅠㅠ
- 어떤 매커니즘이냐면,, a행렬의 i번째 행과 b행렬의 j번째 열을 짝 맞춰 곱해서 더해준게 answer[i][j] 가 되는 거랄까..? (그래서 a행렬 b행렬의 행 or 열 중에 하나는 무조건 크기가 같아야 됨)
- a = [[1,2],[3,4]] / b = [[5,6],[7,8]]이라면 answer = [[1*5+2*7, 1*6+2*8], [3*5+4*7, 3*6+4*8]] 이 됩니다... (매트릭스 그리고 격자문늬로 곱해주고 더해주고 한다고 생각하면 됨 !!!
- 그래서 총 3번의 반복문을 써줬어요. 1번 반복문 -> len(answer) / 2번 반복문 -> len(answer[0]) / 3번 반복문 -> * 하는 횟수 랄까용..?(1*5+2*7 이니까 2번) 을 위해서 !
'파이썬 > 프로그래머스' 카테고리의 다른 글
[프로그래머스] Lv.2 기능개발 (파이썬) (0) | 2025.04.03 |
---|---|
[프로그래머스] Lv.2 의상 (파이썬) (0) | 2025.04.03 |
[프로그래머스] Lv.2 할인 행사 (파이썬) (0) | 2025.03.31 |
[프로그래머스] Lv.2 괄호 회전하기 (파이썬) (1) | 2025.03.31 |
[프로그래머스] Lv.2 연속 부분 수열 합의 개수 (파이썬) (0) | 2025.03.31 |