728x90
반응형
문제 링크
조건
- 곱할 수 있는 배열만 주어진다.
정답 코드
행렬의 곱셈에 대해 알고 있어야 한다. 나는 몰라서 찾아봤다.
나의 코드
function solution(arr1, arr2) {
let arr = new Array(arr1.length).fill(0);
let answer = arr.map((el) => (el = new Array(arr1[0].length).fill(0)));
for (let i = 0; i < arr1.length; i++) {
for (let j = 0; j < arr1[i].length; j++) {
for (let k = 0; k < arr1[i].length; k++) {
answer[i][j] += arr1[i][k] * arr2[k][j];
}
}
}
return answer;
}
정답 코드가 아니다. 테케만 통과한다ㅠ
정답 코드
function solution(arr1, arr2) {
const answer = [];
for (let i = 0; i < arr1.length; i++) {
let arr = [];
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];
}
arr.push(sum);
}
answer.push(arr);
}
return answer;
}
비슷한데 다르다. 내가 생각했던 접근법이랑 처음부터 다른 것 같다.
처음에 미리 arr1 길이에 맞는 0으로만 채워진 배열을 만들지 않고, 정답 코드와 같이 빈배열에 push하는 방법으로 코드를 짰다면 정답 코드와 같이 접근할 수 있었을 거 같다.
그리고, for문의 조건식의 범위도 나와 달랐다.
생각해보면 그렇다. 간단하게 말하면 arr1의 행과 arr2의 열의 값을 곱하는 것이 행렬의 곱셈이기 때문이다.
질문이나 잘못된 점은 댓글로 남겨주세요 :)💖
반응형
728x90
반응형
'알고리즘 > 프로그래머스' 카테고리의 다른 글
[프로그래머스-문자열 다루기 기본] 지수 표기법, 그게 뭔데? (2) | 2023.04.19 |
---|---|
[프로그래머스/JS] Lv2. 배달 (0) | 2023.03.31 |
[프로그래머스] Lv2. 땅따먹기 (0) | 2023.03.28 |
[프로그래머스] Lv2. 구명보트 (2) | 2023.03.22 |
[프로그래머스] Lv2. 기능개발 (0) | 2023.03.21 |
댓글