# 문제 원문
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]] |
# 문제 풀이
행렬의 곱셈.. 행렬 + 행렬의 곱셈 ㅜㅜ,, 그냥 수학문제다. 행렬의 곱셈에 대해서 이해 하는데 시간을 거의 다 쓴거같다.
물론 완전히 이해했다고 보기는 힘든거 같다. 왜 통과한 사람이 6천명 정도 밖에 안되는지 알거같다고 해야하나.. 선형대수를 좀 더 살펴봐야겠다. 하 기초 개념들도 기억 안나는데
# 솔루션 플로우
1. arr1를 순회한다.
2. result[rdx][cdx]는 각 arr1[rdx]의 모든 요소를 arr2[rdx]의 모든 요소로 곱한 값들의 합이므로 그 합을 구해준다.
3. 그렇게 구해진 result를 반환한다.
1. FP
function solution(arr1, arr2) {
return arr1.reduce((result, arr) =>
[
...result,
arr2[0].map((_, cdx) => arr.reduce((result, current, rdx) => result + current * arr2[rdx][cdx], 0))
], []);
}
반응형
'개발 > 알고리즘' 카테고리의 다른 글
[프로그래머스][LEVEL2] 최댓값과 최솟값 (0) | 2021.09.03 |
---|---|
[프로그래머스][LEVEL2] 최솟값 만들기 (0) | 2021.09.03 |
[프로그래머스][LEVEL2] 피보나치 수 (0) | 2021.08.31 |
[프로그래머스][LEVEL2] JadenCase 문자열 만들기 (0) | 2021.08.31 |
[프로그래머스][LEVEL2] 올바른 괄호 (0) | 2021.08.31 |