1. 문제
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
2. 풀이 과정
- 행렬의 곱셈 방식을 알고 있다면 어렵지 않게 풀 수 있는 문제이다.
- 행렬의 곱셈 방식
1. A의 열과 B의 행의 크기(k)가 같아야 성립한다.
2. 결과 배열의 크기는 [A의 행 크기(m)][B의 열 크기(n)]이다.
3. 결과 행렬 (i,j)의 성분은 A의 i번째 행, B의 j번째 열의 성분들을 각각 순서대로 곱하고 더한 값과 같다.
4. 각각의 성분에 대한 연산 횟수(덧셈 횟수)는 A의 열(또는B의 행)수(k)와 같다.
- 이점을 알고 있다면 쉽게 구현할 수 있다.
3. 내 코드
class Solution {
public int[][] solution(int[][] arr1, int[][] arr2) {
int r1 = arr1.length;
int c1 = arr1[0].length;
int r2 = arr2.length;
int c2 = arr2[0].length;
int[][] answer = new int[r1][c2];
for(int i = 0; i < r1; i++) { // 결과 행렬의 행 == arr1의 행
for(int j = 0; j < c2; j++) { // 결과 행렬의 열 == arr2의 열
for(int k = 0; k < c1; k++){ // 덧셈 연산 횟수 == arr1의 열 또는 arr2의 행
// arr1의 행과 arr2의 열은 결과 행렬의 위치와 동일함
// arr1의 열과 arr2의 행만 늘어남
answer[i][j] += arr1[i][k] * arr2[k][j];
}
}
}
return answer;
}
}
4. 다른 정답 코드와 비교
워낙 개념적인 부분의 코드라 다른 정답코드와 차이점이 없었다.
'코딩 테스트 > 프로그래머스' 카테고리의 다른 글
[프로그래머스] 올바른 괄호 (0) | 2024.04.28 |
---|---|
[프로그래머스] 방문 길이 (0) | 2024.04.27 |
[프로그래머스] 실패율 (0) | 2024.04.27 |
[프로그래머스] 모의고사 (0) | 2024.04.26 |
[프로그래머스] 두 개 뽑아서 더하기 (0) | 2024.04.25 |