https://school.programmers.co.kr/learn/courses/30/lessons/12949
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
1. 문제에 대한 이해
- 우리가 풀어야 할 문제는 무엇인가?
- 2차원 행렬 arr1과 arr2를 입력받아, arr1에 arr2를 곱한 결과를 반환 - 주어진 자료는 무엇인가?
- 2차원 행렬 arr1과 arr2 - 조건은 무엇인가?
- 행렬 arr1, arr2의 행과 열의 길이는 2 이상 100 이하
- 행렬 arr1, arr2의 원소는 -10 이상 20 이하인 자연수
2. 계획
- 정답을 담을 배열을 만든다.
- 행렬의 곱셈 : arr1의 제 i 행과 arr2의 제 j열을 차례대로 곱해서 더한다.
3. 실행
- 풀이 계획을 실행하고, 각 단계가 올바른지 점검하라.
const solution = (arr1, arr2) => {
let newArr = [];
for (let i = 0; i < arr1.length; i++) {
newArr.push([]);
for (let j = 0; j < arr2[0].length; j++) {
newArr[i].push(0);
}
}
for (let i = 0; i < arr1.length; i++) {
for (let j = 0; j < arr2[0].length; j++) {
for (let k = 0; k < arr1[0].length; k++) {
newArr[i][j] += arr1[i][k] * arr2[k][j]
}
}
}
return newArr;
}
test('matrixMultiplication', () => {
expect(solution([[1, 4], [3, 2], [4, 1]], [[3, 3], [3, 3]])).toEqual([[15, 15], [15, 15], [15, 15]]);
expect(solution([[1, 2, 3], [4, 5, 6]], [[1, 4], [2, 5], [3, 6]])).toEqual([[14, 32], [32, 77]]);
})
'코테연습' 카테고리의 다른 글
164. 괄호 회전하기 Javascript (0) | 2022.09.21 |
---|---|
163. H-Index Javascript (0) | 2022.09.20 |
161. 파괴되지 않은 건물 Javascript (0) | 2022.09.19 |
160. 주차 요금 계산 Javascript (0) | 2022.09.19 |
159. 캐시 Javascript (0) | 2022.09.19 |
댓글