문제 설명
2차원 행렬 arr1과 arr2를 입력받아, arr1에 arr2를 곱한 결과를 반환하는 함수, solution을 완성해주세요.
제한사항
- 행렬 arr1, arr2의 행과 열의 길이는 2 이상 100 이하입니다.
- 행렬 arr1, arr2의 원소는 -10 이상 20 이하인 자연수입니다.
- 곱할 수 있는 배열만 주어집니다.
입출력 예

입출력 예 설명

내 풀이
function solution(arr1, arr2) {
let answer=[];
for(let i=0; i<arr1.length; i++){
let sumArray=[];
for(let j=0; j<arr2[0].length; j++){
let sum=0;
for(let k=0; k<arr2.length; k++){
sum += arr1[i][k]*arr2[k][j]
}
sumArray.push(sum);
}
answer.push(sumArray)
}
return answer;
}
해설
행렬의 곱셈(matrix multiplication)은 여타 행렬의 연산과 같이 '크기가 맞는' 경우에만 할 수 있는데, 행렬의 곱셈에서 '크기가 맞는다'는 것은 앞 행렬의 열의 수와 뒷 행렬의 행의 수가 같다는 것이다. 이 조건이 만족되어야 행렬의 곱셈 이용이 가능하다.
곱셈 결과 나오는 행렬의 크기는 (앞 행렬의 행의 수) × (뒤 행렬의 열의 수) 가 된다.

행렬의 크기 계산 예)
arr1*arr2[0,0] = (arr1[0,0] * arr2[0,0]) + (arr1[0,1] * arr2[1,0]) + (arr1[0,2] * arr2[2,0]))
행렬의 곱셈을 하기 위해서 B와 C가 같아야하고 곱셈결과 값은 A*D이다.
3중 for문을 사용하였는데
i는 A (= arr1.length),
j는 arr1 * arr2의 열의 갯수,(=arr2[0].length)
k는 arr1 * arr2의 한 칸의 값을 구하기 위해 반복해야 하는 수이다.
'프로그래머스' 카테고리의 다른 글
[1차] 비밀지도(2018 KAKAO BLIND RECRUITMENT) - JS (0) | 2023.07.22 |
---|---|
튜플 (1) | 2023.06.04 |
두 개 뽑아서 더하기 (0) | 2023.05.22 |
숫자의 표현 (0) | 2023.05.21 |
최솟값 만들기 (1) | 2023.05.21 |
문제 설명
2차원 행렬 arr1과 arr2를 입력받아, arr1에 arr2를 곱한 결과를 반환하는 함수, solution을 완성해주세요.
제한사항
- 행렬 arr1, arr2의 행과 열의 길이는 2 이상 100 이하입니다.
- 행렬 arr1, arr2의 원소는 -10 이상 20 이하인 자연수입니다.
- 곱할 수 있는 배열만 주어집니다.
입출력 예

입출력 예 설명

내 풀이
function solution(arr1, arr2) {
let answer=[];
for(let i=0; i<arr1.length; i++){
let sumArray=[];
for(let j=0; j<arr2[0].length; j++){
let sum=0;
for(let k=0; k<arr2.length; k++){
sum += arr1[i][k]*arr2[k][j]
}
sumArray.push(sum);
}
answer.push(sumArray)
}
return answer;
}
해설
행렬의 곱셈(matrix multiplication)은 여타 행렬의 연산과 같이 '크기가 맞는' 경우에만 할 수 있는데, 행렬의 곱셈에서 '크기가 맞는다'는 것은 앞 행렬의 열의 수와 뒷 행렬의 행의 수가 같다는 것이다. 이 조건이 만족되어야 행렬의 곱셈 이용이 가능하다.
곱셈 결과 나오는 행렬의 크기는 (앞 행렬의 행의 수) × (뒤 행렬의 열의 수) 가 된다.

행렬의 크기 계산 예)
arr1*arr2[0,0] = (arr1[0,0] * arr2[0,0]) + (arr1[0,1] * arr2[1,0]) + (arr1[0,2] * arr2[2,0]))
행렬의 곱셈을 하기 위해서 B와 C가 같아야하고 곱셈결과 값은 A*D이다.
3중 for문을 사용하였는데
i는 A (= arr1.length),
j는 arr1 * arr2의 열의 갯수,(=arr2[0].length)
k는 arr1 * arr2의 한 칸의 값을 구하기 위해 반복해야 하는 수이다.
'프로그래머스' 카테고리의 다른 글
[1차] 비밀지도(2018 KAKAO BLIND RECRUITMENT) - JS (0) | 2023.07.22 |
---|---|
튜플 (1) | 2023.06.04 |
두 개 뽑아서 더하기 (0) | 2023.05.22 |
숫자의 표현 (0) | 2023.05.21 |
최솟값 만들기 (1) | 2023.05.21 |