문제
https://school.programmers.co.kr/learn/courses/30/lessons/12949
설계
- 행렬의 곱셈 방식을 알아야 한다.
- 처음 빈 배열을 생성할 때 arr2가 아닌 arr1으로 잘못 계산하여 런타임 에러가 났다.
행렬의 곱셈
A는 2×3 행렬, B는 3×2 행렬이라고 가정했을 때 AB의 결과는 2×2 행렬이다.
파이썬
def solution(arr1, arr2):
answer = [[0] * len(arr2[0]) for _ in range(len(arr1))] # 규격에 맞는 빈 배열 생성
# 계산
for i in range(len(arr1)):
for x in range(len(arr2[0])):
for y in range(len(arr1[0])):
answer[i][x] += arr1[i][y] * arr2[y][x]
return answer
자바스크립트
function solution(arr1, arr2) {
let answer = [];
// 행렬 빈 배열 만들기
for (let i = 0; i < arr1.length; i++) {
answer.push(new Array(arr2[0].length).fill(0))
}
// 배열에 숫자 더하기
for (let i = 0; i < arr1.length; i++) {
for (let j = 0; j < arr2[0].length; j++) {
for (let k = 0; k < arr1[0].length; k++) {
answer[i][j] += arr1[i][k] * arr2[k][j];
}
}
}
return answer
}
'PS (Problem Solving) > Programmers' 카테고리의 다른 글
[프로그래머스] 멀리 뛰기 (0) | 2022.11.10 |
---|---|
[프로그래머스] 점프와 순간이동 (0) | 2022.11.09 |
[프로그래머스] H-index (0) | 2022.11.03 |
[프로그래머스] N개의 최소공배수 (0) | 2022.11.01 |
[프로그래머스] 영어 끝말잇기 (0) | 2022.10.31 |