<링크>
https://school.programmers.co.kr/learn/courses/30/lessons/12949?language=java
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
<문제>
2차원 행렬 arr1과 arr2를 입력받아, arr1에 arr2를 곱한 결과를 반환하는 함수, solution을 완성해주세요.
<제한사항>
행렬 arr1, arr2의 행과 열의 길이는 2 이상 100 이하입니다.
행렬 arr1, arr2의 원소는 -10 이상 20 이하인 자연수입니다.
곱할 수 있는 배열만 주어집니다.
<입력 및 출력>
<고려사항>
1. 행렬의 곱셈에 대한 특징 고려하기.
2. 곱할수 있는 형태이기 때문에, 첫번째 행렬의 열수와 두번째 행렬의 행 개수는 동일할 것.
<풀이 - Python>
def solution(arr1, arr2):
answer = [[0] * len(arr2[0]) for _ in range(len(arr1))]
for i in range(len(answer)):
for j in range(len(answer[0])):
sum = 0
for k in range(len(arr2)):
sum += arr1[i][k] * arr2[k][j]
answer[i][j] = sum
return answer
<풀이 - Java>
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[0].length; j++) {
int sum = 0;
for (int k = 0; k < arr2.length; k++) {
sum += arr1[i][k] * arr2[k][j];
}
answer[i][j] = sum;
}
}
return answer;
}
}
코드 진행 순서
1. 2차원 배열 선언 및 초기화
2. answer.length 를 통해 행 반복
3. answer[0].length를 통해 열 반복
4. 곱셈 진행. (주의할것 : i 행의 k번째 요소 * k행의 j 번째요소를 곱하는거임) (행렬 곱 : m*n n *k -> m*k)
5. 출력
소요시간 : 15분
- 학부연구생 시절, 데이터 분석 관련 프로젝트 하다가 직접 짜본경험이 있어서 쉽게 풀수 있었습니다..
'알고리즘 > 프로그래머스' 카테고리의 다른 글
<프로그래머스> 짝지어 제거하기 (0) | 2024.08.15 |
---|---|
<프로그래머스> 괄호 회전하기 (0) | 2024.08.15 |
<프로그래머스> 올바른 괄호 (0) | 2024.08.15 |
<프로그래머스> 모의고사 (0) | 2024.08.07 |
<프로그래머스> 두 개 뽑아서 더하기 (0) | 2024.08.02 |