Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- algorithm
- 정렬
- 멘딕스
- 트리
- 매개변수 탐색
- 그래프
- microflow
- 완전탐색
- 프로그래머스
- 백트래킹
- SQL
- 자바
- domain model
- MySQL
- 자료구조
- Bruteforce
- 해시맵
- Sort
- Recursion
- Mendix
- 스택
- 집합
- 반효경교수님
- 이분탐색
- git
- 가중치없는그래프
- 재귀
- dfs
- lcap
- 알고리즘
Archives
- Today
- Total
mondegreen
[240324] 알고리즘 리부트 37일차 - 프로그래머스 행렬의 곱셈 자바 본문
반응형
언제 배웠는지도 기억이 가물가물한 행렬의 곱셈이 어떤 방식으로 처리되는지 이해가 안되서 찾아보고 푼 문제이다. 구현의 핵심은 아래 주석이 달려있는 부분이다.
class Solution {
public int[][] solution(int[][] arr1, int[][] arr2) {
int [][] answer = new int[arr1.length][arr2[0].length];
for(int i = 0; i < answer.length; i++){
for(int j = 0; j < answer[i].length; j++){
for(int k = 0; k < arr2.length; k++){
// 이 반복문이 중요한데 행렬의 곱셈에서 결과 행렬의 크기는 [첫번째 행렬의 행][두번째 행렬의 열] 이다.
// 그리고 행렬의 곱셈이 성립하려면 첫번째 행렬의 열과 두번째 행렬의 행이 같아야 하는데 그게 여기서의 k이다.
// i와 j만으로 반복문을 돌며 곱셈을 해내기엔 배열 범위를 벗어난다.
// 반복되는 곱의 구간이 k라는 동일한 횟수이므로 이렇게 처리가 가능하다.
answer[i][j] += arr1[i][k] * arr2[k][j];
}
}
}
return answer;
}
}
반응형
'알고리즘 풀이 및 리뷰 > 프로그래머스' 카테고리의 다른 글
[240326] 알고리즘 리부트 39일차 - 프로그래머스 올바른 괄호 자바 (0) | 2024.03.26 |
---|---|
[240325] 알고리즘 리부트 38일차 - 프로그래머스 방문 길이 자바 (1) | 2024.03.25 |
[240324] 알고리즘 리부트 37일차 - 프로그래머스 실패율 자바 (0) | 2024.03.24 |
[240324] 알고리즘 리부트 37일차 - 프로그래머스 모의고사 자바 (0) | 2024.03.24 |
[240324] 알고리즘 리부트 37일차 - 프로그래머스 두 개 뽑아서 더하기 자바 (0) | 2024.03.24 |