반응형
[level 2] 행렬의 곱셈 - 12949
성능 요약
메모리: 77.7 MB, 시간: 8.68 ms
구분
코딩테스트 연습 > 연습문제
채점결과
정확성: 100.0
합계: 100.0 / 100.0
제출 일자
2024년 10월 04일 04:40:42
문제 설명
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]] |
- 출처: 프로그래머스 코딩 테스트 연습, https://school.programmers.co.kr/learn/challenges
제출 코드
자바 풀이
class Solution {
public int[][] solution(int[][] arr1, int[][] arr2) {
int[][] answer = new int[arr1.length][arr2[0].length]; // m x n, n x r 행렬을 곱하면 m x r 행렬이 나옴
// answer[i][j] = arr1[i][0]*arr2[0][j] + arr1[i][1]*arr2[1][j] + ... + arr1[i][n]*arr2[n][j]
for (int i = 0; i < answer.length; i++) {
for (int j = 0; j < answer[i].length; j++) {
for (int n = 0; n < arr2.length; n++) {
answer[i][j] += arr1[i][n] * arr2[n][j];
}
}
}
return answer;
}
}
파이썬 풀이
import numpy as np
def solution(arr1, arr2):
return (np.array(arr1)@np.array(arr2)).tolist()
728x90
반응형
'코딩 테스트 정복기 > 프로그래머스' 카테고리의 다른 글
[프로그래머스/level 2] 타겟 넘버 - 43165 (0) | 2024.10.04 |
---|---|
[프로그래머스/level 2] 가장 큰 수 - 42746 (4) | 2024.10.04 |
[프로그래머스/level 2] 프로세스 - 42587 (3) | 2024.10.04 |
[프로그래머스/level 1] 최소직사각형 - 86491 (0) | 2024.10.04 |
[프로그래머스/level 1] 두 개 뽑아서 더하기 - 68644 (0) | 2024.10.04 |