하루에 한 문제
[프로그래머스] 행렬의 곱셈 -Java 본문
https://programmers.co.kr/learn/courses/30/lessons/12949
class Solution {
public int[][] solution(int[][] arr1, int[][] arr2) {
int[][] answer = new int[arr1.length][arr2[0].length];
int size=arr2.length;
for(int i=0; i<arr1.length; i++) {
for(int j=0; j<arr2[0].length; j++) {
answer[i][j]=cal(i,j,size,arr1,arr2);
}
}
return answer;
}
private int cal(int i, int j, int size, int[][] arr1, int[][] arr2) {
int sum=0;
for(int k=0; k<size; k++) {
sum+=arr1[i][k]*arr2[k][j];
}
return sum;
}
}
소요시간 : 14분
이 문제를 풀기 위해서는 우선 행렬의 곱셈을 이해하고 있어야 합니다!!
행렬을 곱하기 위해서는 앞쪽 행렬의 열과 뒤쪽 행렬의 행이 같아야 합니다!
그리고 곱해서 나온 결과는 앞쪽 행렬의 행 * 뒤쪽 행렬의 열이 나옵니다.
결국 3x2 2x2 행렬을 곱하면 3x2의 행렬이 나오는 것입니다.
이것을 이용해서 행렬의 크기를 잡아주었고 2중 for문을 돌렸습니다.
그리고 행렬의 0,0에 값을 넣을 때는 1번째 행렬의 0행과, 2번째 행렬의 0열을 연산해주면 됩니다.
만약 2,1의 값을 구한다면 1번째 행렬의 2행과 2번째 행렬의 1열과 연산을 해주시면 됩니다!! 끝~
아 이거는 그냥 순위 999등 돼서 기분 좋아서 올려봤습니다~
'알고리즘 > 프로그래머스' 카테고리의 다른 글
[프로그래머스 2021 KAKAO BLIND RECRUITMENT]신규 아이디 추천 -Java (0) | 2021.01.25 |
---|---|
[프로그래머스 2018 KAKAO BLIND RECRUITMENT] n진수 게임 -Java (1) | 2021.01.23 |
[프로그래머스] 올바른 괄호 -Java (1) | 2021.01.22 |
[프로그래머스 월간 코드 챌린지 시즌1]이진 변환 반복하기 (0) | 2021.01.22 |
[프로그래머스 2020카카오 인턴쉽] 수식 최대화 -Java (0) | 2021.01.21 |
Comments