문제
행렬 곱셈 값 구하기
풀이
function solution(arr1, arr2) {
const answer = []
for(let i = 0; i < arr1.length; i++){
const rows = []
for(let j = 0; j < arr2[0].length; j++){
let sum = 0
for(let k = 0; k <arr1[i].length; k++){
sum += arr1[i][k] * arr2[k][j]
}
rows.push(sum)
}
answer.push(rows)
}
return answer
}
- answer : 최공 결과 행렬을 담을 빈 배열 선언
- for i
- arr1에 대한 각 행에 대해 반복
- row : 결과 행렬의 한 행을 담을 배열
- for j
- arr2에 대한 각 열에 대해 반복
- 행렬 곱셈 수행 : arr1의 i번째행과 arr2의 j 번째 열을 곱하고 합산
- rows 배열을 answer에 추가
다른 풀이
function multiplyMatrices(arr1, arr2) {
// arr1의 각 행에 대해 map을 사용하여 새로운 배열을 생성
return arr1.map((row) =>
// arr2[0]의 각 열에 대해 map을 사용하여 행렬 곱셈 수행
arr2[0].map((_, y) =>
// 현재 위치의 결과 행렬의 원소 계산
row.reduce((sum, val, c) =>
sum + val * arr2[c][y], 0)
)
);
}
- arr2.map(_, y)
- _는 현재 값이 필요하지 않음을 나타내고 y는 현재 열의 인덱스
- reduce
- 현재 위치의 결과 행렬의 원소 계산
- sum 은 누적된 값으로 초기값 0
- c는 현재 요소 인덱스
function productMatrix(A, B) {
return A.map(function(row) {
return row.map(function(_, i) {
return row.reduce(function(sum, cell, j) {
return sum + cell * B[j][i];
}, 0);
});
});
}
'기초다지기 > JS 코딩테스트' 카테고리의 다른 글
javaScript 분수 덧셈 (1) | 2024.01.10 |
---|---|
javaScript 연속된 정수의 합 (1) | 2024.01.09 |
javaScript H-index 찾기 (0) | 2024.01.05 |
javaScript 등차수열 및 등비수열의 다음 항 찾기 (1) | 2024.01.04 |
javaScript 중복 제거후 남은 종류의 수 (0) | 2024.01.03 |