https://school.programmers.co.kr/learn/courses/30/lessons/12949
문제
2차원 행렬 arr1과 arr2를 입력받아, arr1에 arr2를 곱한 결과를 반환하는 함수, solution을 완성해 주세요.
제한 조건
행렬 arr1, arr2의 행과 열의 길이는 2 이상 100 이하입니다.
행렬 arr1, arr2의 원소는 -10 이상 20 이하인 자연수입니다.
곱할 수 있는 배열만 주어집니다.
풀이
class Solution {
fun solution(arr1: Array<IntArray>, arr2: Array<IntArray>): Array<IntArray> {
return Array(arr1.size) { i ->
IntArray(arr2[0].size) { j ->
var sum = 0
for (k in arr2.indices) {
sum += arr1[i][k] * arr2[k][j]
}
sum
}
}
}
}
- 이문제는 행령의 곱이라는 수학공식을 알고 있어야 풀수있습니다.
- 문제의 제한 사항으로 곱할 수 있는 배열만 주어진 다고 했으니 arr1[0].size == arr2.size는 같을 것입니다. 이제 위 식처럼 result[n][m] = arr1[n][0]*arr2[0][m] + arr1[n][1]*arr2[1][m] + ... + arr1[n][k-1]*arr2[k-1][m]일 것입니다. 위 식을 이용하여 코드를 작성하면 위 같은 코드가 나옵니다.
결과
참고
행렬의 곱셈, 행렬의 거듭제곱 - 수학방 : https://mathbang.net/562#gsc.tab=0
행렬 곱셈 - 위키백과, 우리 모두의 백과사전 : https://ko.wikipedia.org/wiki/%ED%96%89%EB%A0%AC_%EA%B3%B1%EC%85%88
'코틀린 > 프로그래머스' 카테고리의 다른 글
[프로그래머스] - 둘만의 암호(Kotlin) (0) | 2023.08.09 |
---|---|
[프로그래머스] - 신규 아이디 추천(Kotlin) (0) | 2023.08.09 |
[프로그래머스] - 완주하지 못한 선수(Kotlin && Java) (0) | 2023.08.09 |
[프로그래머스] - 소수 만들기 (Kotlin) (0) | 2023.08.08 |
[프로그래머스] - 성격 유형 검사하기 (Kotlin) (0) | 2023.08.08 |