728x90
https://school.programmers.co.kr/learn/courses/30/lessons/12949
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
행렬의 곱셈은 DP를 사용해서 최적화 할 수도 있다. 물론 이건 2개만곱하는 거니까 이런것 까지는 필요 없지만 DP포함이 되었다면 레벨 2가 아니겠지.
행렬의 곱셈을 할 때,
answer[a][d] = A[a][b] * B[c][d]
에서 b = c 임을 눈치챈다면 쉽게 풀 수 있다. 이런 규칙을 찾는 문제는 손으로 써서 관찰하는 것이 규칙을 찾기 편하다. 물론 머리가 좋으면 바로 눈치챌 수도 있겠지만 일반적으론 이게 가장 좋은 방법이다.
#include <string>
#include <vector>
using namespace std;
vector<vector<int>> solution(vector<vector<int>> arr1, vector<vector<int>> arr2) {
int n = arr1.size();
int m = arr1[0].size();
int l = arr2[0].size();
vector<vector<int>> answer(n, vector<int>(l , 0));
for(int i = 0; i < n; i++){
for(int j = 0; j < m; j++){
for(int k = 0; k < l; k++){
answer[i][k] += arr1[i][j] * arr2[j][k];
}
}
}
return answer;
}
'프로그래머스 풀이 > Lv 2' 카테고리의 다른 글
프로그래머스 - 거리두기 확인하기 (C++) (0) | 2023.11.23 |
---|---|
프로그래머스 - 피로도 (C++) (0) | 2023.11.04 |
프로그래머스 - [1차]캐시 (0) | 2023.03.26 |
프로그래머스 - 카카오 프렌즈 컬러링북(C++) (0) | 2023.02.26 |
프로그래머스 - N개의 최소공배수(C++) (0) | 2023.02.22 |