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 |
Tags
- 소수찾기 java
- 알고리즘
- TestContainers
- AccessToken
- Invalid property 'principal.username' of bean class
- OptimisticLock
- ObjectOptimisticLockingFailureException
- DI
- kotest testcontainers
- multimodule testcontainers
- @transactional
- 낙관적 락 재시도
- 우아한 테크러닝
- 낙관적 락 롤백
- interface
- ObjectOptimisticLockingFailureException 처리
- Spring Cloud Gateway
- springsecurity
- jpa
- redissonlock aop
- spring aop
- spring DI
- S3
- aop
- 멀티모듈 테스트컨테이너
- 형상관리
- 백준
- netty
- RefreshToken
- java
Archives
- Today
- Total
조급하면 모래성이 될뿐
[프로그래머스]행렬의 곱셈 본문
문제 링크 : https://programmers.co.kr/learn/courses/30/lessons/12949
나의 풀이
- 선수지식 필수 ( 선형대수 )
* 행렬의 곱셈 공식에 대한 이해가 필요. ( 링크 : https://darkpgmr.tistory.com/103 )
- 두 행렬 A,B에 대해서 A*B 곱셈을 위해서는 A의 열과 B의 행이 같아야지만 가능하다.
- 먼저 문제의 예시를 보자.
arr1 -> [ [1,4], [3,2], [4,1] ]
arr2 -> [ [3,3] , [3,3] ]
해당 arr1,arr2는 3*2 , 2*3 행렬의 곱이므로 처리가능하다.
예시는 아래와같은 처리 순서로 처리된다.
- 행렬의 곱셈 방식에대해 이해했다면 위 처리 순서를 코드로 풀면 끝이다..
- 쉬워 보이지만, 오래 걸렸다...
1. 먼저 arr1의 모든 행을 기준으로 arr2의 모든 열에 대해서 회전해야 한다.
2. arr2의 1개 열을 처리할 때 해당 열의 모든 행을 회전해야 한다.
3. 2를 수행하면서 arr1과 arr2를 곱하고 더해간다.
코드
private static int[][] solution(int[][] arr1, int[][] arr2) {
// 행
int row = arr1.length;
// 열
int col = arr2[0].length;
int[][] answer = new int[row][col];
// 2차행렬의 곱셈은 앞배열의 열, 뒤 배열의 행이 같아야 함.
if(arr1[0].length == arr2.length ) {
// a b c
for ( int i = 0 ; i < row; i++ ) {
// i의 대상으로 arr2의 k열만큼 수행이 되야 함.
for ( int k = 0 ; k < col; k ++ ) {
// k열 수행 될때마다 처리되야하는 로직은 ?
// 행 x 열 연산을 수행해주어야 한다.
int value = 0;
//arr1[i][0,1,2, ... ]
for ( int j = 0 ; j < arr1[i].length; j++ ) {
// * arr2[0,1,2][0]
// arr1[i][j] * arr2[j][?]
// j값은 동일하구만.
value += arr1[i][j] * arr2[j][k];
// answer 넣어주기.
}
answer[i][k] = value;
}
}
}
return answer;
}
제출 결과
반응형
'Algorithm > Programmers' 카테고리의 다른 글
[프로그래머스] 괄호변환 (0) | 2020.04.01 |
---|---|
[프로그래머스] JadenCase문자열 만들기 (0) | 2020.01.20 |
[프로그래머스] 캐시 (0) | 2020.01.05 |
[프로그래머스]숫자의 표현 (0) | 2020.01.04 |
[프로그래머스] 다음 큰 숫자 (0) | 2019.12.12 |