반응형
문제
2차원 행렬 arr1과 arr2를 입력받아, arr1에 arr2를 곱한 결과를 반환하는 함수, solution을 완성해주세요.
제한 조건
행렬 arr1, arr2의 행과 열의 길이는 2 이상 100 이하입니다.
행렬 arr1, arr2의 원소는 -10 이상 20 이하인 자연수입니다.
곱할 수 있는 배열만 주어집니다.
나의 풀이
function solution(arr1, arr2) {
var answer = [];
let X = arr1.length;
let Y = arr2[0].length;
for(let i =0; i < X;i++){
let tmp =[]
for(let j =0; j < Y;j++){
tmp.push(arr1[i].reduce((acc,cur,index)=>acc += cur*arr2[index][j],0))
}
answer.push(tmp)
}
return answer;
}
괜히 어렵게 한번에 처리 하려다가 시간이 오래 걸렸다.
헷갈릴 수록 기본 개념에 기반해서, 정해진 위치에 정해진 답이 들어가도록 먼저 구성하는게 맞는 것 같다.
다른이의 풀이
function solution(arr1, arr2) {
return arr1.map((row) => arr2[0].map((x,I) => row.reduce((acc,cur,index) => acc + cur * arr2[index][I], 0)))
map 내부에서 외부 변수를 끌어들여서 이렇게 쓸 수 있다는걸 알 수 있었다.
반응형
'코딩테스트' 카테고리의 다른 글
[프로그래머스] level2. 이진 변환 반복하기(javascript) (0) | 2021.05.04 |
---|---|
[프로그래머스] level2. 다음 큰 숫자 (javascript) (0) | 2021.05.03 |
[프로그래머스] level2. 타겟 넘버 (javascript) (0) | 2021.05.03 |
[프로그래머스] level2. 땅따먹기 (javascirpt) (0) | 2021.05.03 |
[프로그래머스] level2. 올바른 괄호 (javascript) (0) | 2021.05.03 |