문제 링크 : https://school.programmers.co.kr/learn/courses/30/lessons/12949
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
풀이
로직
하... 나는 문과라 행렬을 배운 적이 없는데 ^-^...
하지만 질문하기 탭의 어떤 분께서 행렬의 곱셈을 구하는 법을 알려주셔서,
그걸 참고해서 로직을 짰다. (신준영 님, 감사합니다!)
- 열의 수와 행의 수가 같을 때만 두 행렬을 곱할 수 있다.
- 곱할 수 있는 행렬만
arr1
과arr2
로 주어진다고 나와있음. arr1
의 열의 수는arr1[1].length
arr2의 행의 수는arr2.length
n = arr2.length
- 곱할 수 있는 행렬만
arr1[m][n]
과arr2[n][k]
를 곱한 행렬answer
의 크기는answer[m][k]
가 된다.m = arr1.length
k = arr2[0].length
코드
class Solution {
public int[][] solution(int[][] arr1, int[][] arr2) {
int m = arr1.length;
int k = arr2[0].length;
int n = arr2.length;
int[][] answer = new int[m][k];
for(int i=0; i<m; i++) {
for(int j=0; j<k; j++) {
for(int l=0; l<n; l++) {
answer[i][j] += arr1[i][l] * arr2[l][j];
}
}
}
return answer;
}
}
채점 결과
정확성 테스트
테스트 1 〉 통과 (1.09ms, 71.5MB)
테스트 2 〉 통과 (6.65ms, 83.9MB)
테스트 3 〉 통과 (6.65ms, 91.8MB)
테스트 4 〉 통과 (0.56ms, 65.7MB)
테스트 5 〉 통과 (16.56ms, 85.4MB)
테스트 6 〉 통과 (5.43ms, 83.1MB)
테스트 7 〉 통과 (0.48ms, 78MB)
테스트 8 〉 통과 (0.23ms, 75.8MB)
테스트 9 〉 통과 (0.15ms, 84.7MB)
테스트 10 〉 통과 (9.07ms, 88.1MB)
테스트 11 〉 통과 (1.49ms, 78.5MB)
테스트 12 〉 통과 (0.23ms, 78.7MB)
테스트 13 〉 통과 (5.41ms, 86MB)
테스트 14 〉 통과 (10.04ms, 76.1MB)
테스트 15 〉 통과 (3.60ms, 77.2MB)
테스트 16 〉 통과 (1.56ms, 78.3MB)
채점 결과
정확성: 100.0
합계: 100.0 / 100.0
배운 점
- 행렬의 곱셈 기초...
- https://mathbang.net/562#gsc.tab=0 이 곳을 통해 행렬에 대한 개념을 잡고가려고 한다.
'코딩테스트 - 프로그래머스 > JAVA' 카테고리의 다른 글
[프로그래머스 / 해시 / 자바(JAVA)] 의상 (0) | 2024.04.19 |
---|---|
[프로그래머스 / 2018 KAKAO BLIND RECRUITMENT / 자바(JAVA)] [1차] 캐시 (1) | 2024.04.18 |
[프로그래머스 / 월간 코드 챌린지 시즌3 / 자바(JAVA)] n^2 배열 자르기 (0) | 2024.04.11 |
[프로그래머스 / 정렬 / 자바(JAVA)] H-Index (0) | 2024.04.09 |
[프로그래머스 / 월간 코드 챌린지 시즌2 / 자바(JAVA)] 괄호 회전하기 (0) | 2024.04.08 |