728x90
반응형
프로그래머스 행렬의 곱셈 레벨 2 문제이다.
행렬의 곱셈 방법과 이차원 배열에 대한 이해가 있으면 풀 수 있는 문제였다.
📑 행렬의 곱셈
🔗 https://school.programmers.co.kr/learn/courses/30/lessons/12949
더보기
문제 설명
2차원 행렬 arr1과 arr2를 입력받아, arr1에 arr2를 곱한 결과를 반환하는 함수, solution을 완성해주세요.
제한 조건
- 행렬 arr1, arr2의 행과 열의 길이는 2 이상 100 이하입니다.
- 행렬 arr1, arr2의 원소는 -10 이상 20 이하인 자연수입니다.
- 곱할 수 있는 배열만 주어집니다.
입출력 예
arr1 | arr2 | return |
[[1, 4], [3, 2], [4, 1]] | [[3, 3], [3, 3]] | [[15, 15], [15, 15], [15, 15]] |
[[2, 3, 2], [4, 2, 4], [3, 1, 4]] | [[5, 4, 3], [2, 4, 1], [3, 1, 1]] | [[22, 22, 11], [36, 28, 18], [29, 20, 14]] |
✏️ 문제 해결 방법
행렬의 곱은 다음과 같이 이루어진다. arr1 의 행과 arr2의 열의 곱으로 결과가 나오는데, 이를 코드로 표현하면 다음과 같다.
전체 코드
class Solution {
public int[][] solution(int[][] arr1, int[][] arr2) {
int[][] answer = new int[arr1.length][arr1[0].length];
for(int i = 0 ; i < arr1.length ; i++) {
for(int j = 0 ; j < arr2[0].length ; j++){
for(int k = 0 ; k < arr1[0].length ; k++){
answer[i][j] += arr1[i][k]*arr2[k][j];
}
}
}
return answer;
}
}
🕸️ 문제 풀이 소감
문제 자체는 어렵지 않았지만 행렬 문제의 변수를 넣는데 있어 위치가 너무 헷갈려서 하나하나 손으로 적어보지 않고는 못 하겠다는 생각을 했다. 처음에는 그냥 간단하지~! 하며 눈으로 풀 생각이었는데 머리로만 생각하다보니 위치가 어디가 어딘지 너무 헷갈려서 손으로 적으며 풀어야 실제 문제에서는 틀리지 않겠구나 생각했다.
쉽다 생각하고 만만하게 보면 안되겠다는 생각을 했다.ㅎㅎ
궁금한 점이 있거나 잘못된 부분이 있다면 얼마든지 댓글로 남겨주세요 🤗
감사합니다!
728x90
반응형
'LANGUAGE > JAVA' 카테고리의 다른 글
[알고리즘] 프로그래머스 이상한 문자 만들기 (레벨 1) / 자바 java 풀이 (0) | 2024.06.18 |
---|---|
[알고리즘] 프로그래머스 자연수 뒤집어 배열로 만들기 (레벨 1) / 자바 java 풀이 (0) | 2024.06.17 |
[알고리즘] 프로그래머스 시저암호 (레벨 1) / 자바 java 풀이 (2) | 2024.06.16 |
[알고리즘] 프로그래머스 거리두기 확인하기 (레벨 2) / 자바 java 풀이 (2) | 2024.06.14 |
[알고리즘] 프로그래머스 삼각 달팽이 (레벨 2) / 자바 java 풀이 (1) | 2024.06.12 |