프로그래머스: 행렬의 곱셈
문제
https://programmers.co.kr/learn/courses/30/lessons/12949
코드
1 | public int[][] solution(int[][] arr1, int[][] arr2) { |
흐름
- 행렬의 곱은 앞 행렬의 행과 뒤 행렬의 열을 곱한 것과 같다.
- ex) 앞 행렬이 m x n 크기이고 뒤 행렬이 n x r 크기인 경우 곱은 m x r크기의 행렬이 된다.
- 곱 행렬(0, 0)은 앞 행렬의 (0, 0) X 뒷 행렬 (0, 0) + 앞 행렬 (0, 1) X 뒷 행렬 (1, 0)
- (0, 1)은 (0, 0) X (0, 1) + (0, 1) X (1, 1)
- (1, 0)은 (1, 0) X (0, 0) + (1, 1) X (0, 1)
- (1, 1)은 (1, 0) X (0, 1) + (1, 1) X (1, 1)
- (2, 0)은 (2, 0) X (0, 0) + (2, 1) X (0, 1)
- (2, 1)은 (2, 0) X (0, 1) + (2, 1) X (1, 1)
- 이런식으로 진행된다.
결과
번호 | 속도 |
---|---|
테스트 1 | 통과 (2.93ms, 54.1MB) |
테스트 2 | 통과 (10.09ms, 54.3MB) |
테스트 3 | 통과 (17.85ms, 56.7MB) |
테스트 4 | 통과 (2.02ms, 50.9MB) |
테스트 5 | 통과 (8.78ms, 53.7MB) |
테스트 6 | 통과 (9.40ms, 56.2MB) |
테스트 7 | 통과 (1.56ms, 52.3MB) |
테스트 8 | 통과 (1.80ms, 50.7MB) |
테스트 9 | 통과 (1.79ms, 50.1MB) |
테스트 10 | 통과 (8.66ms, 54.9MB) |
테스트 11 | 통과 (3.37ms, 52.3MB) |
테스트 12 | 통과 (2.05ms, 54.6MB) |
테스트 13 | 통과 (9.96ms, 54.1MB) |
테스트 14 | 통과 (10.60ms, 54.3MB) |
테스트 15 | 통과 (7.94ms, 54.1MB) |
테스트 16 | 통과 (4.86ms, 54.6MB) |
테스트 케이스
1 | assertArrayEquals(new int[][] {{15, 15}, {15, 15}, {15, 15}}, test.solution(new int[][] {{1, 4}, {3, 2}, {4, 1}}, new int[][] {{3, 3}, {3, 3}})); |