티스토리 뷰
#include <string>
#include <vector>
using namespace std;
// arr1(m * k 행렬) * arr2(k * n 행렬) = answer (m * n 행렬)
vector<vector<int>> solution(vector<vector<int>> arr1, vector<vector<int>> arr2) {
vector<vector<int>> answer;
vector<int> answer_temp;
int m, n, k;
int temp = 0;
for(m = 0; m < arr1.size(); m++){
for(n = 0; n < arr2[0].size(); n++){
temp = 0;
for( k = 0; k < arr2.size(); k++){
temp += arr1[m][k] * arr2[k][n];
}
answer_temp.push_back(temp);
}
answer.push_back(answer_temp);
answer_temp.clear();
}
return answer;
}
행렬의 곱셈 공식을 알고도, m, n 그리고 겹치는 k를 어떻게 for문으로 구성하는지가 헷갈렸다.
연습장에 충분히 연습해보고 구성했다.
answer 하나의 행에 대한 원소들의 값을 answer_temp에 push 해놓고, 끝나면 answer에 push한다.
그리고 clear 함수를 이용해서 answer_temp를 비워준다.
이렇게 계속 반복하면서 answer 배열에 한 행씩 채워나간다.
이건 설명을 쓰기엔 너무 공식뿐이어서 직접 연습장에 행렬의 곱셈을 풀어보면서 내가 어떤 방식으로 풀고 있는지 그리고 그것을 어떻게 for문으로 묶을 수 있는지 생각해보면 좋다.
처음엔 풀고도 for문이 3개나 있는데 시간초과 나겠네... 생각했는데 올 패스가 떠서 놀랬당
아마 배열의 크기가 커지면 어마무시해지겠지
'알고리즘 > C++' 카테고리의 다른 글
[C++] 프로그래머스 N개의 최소공배수 (0) | 2020.03.09 |
---|---|
[C++] 프로그래머스 JadenCase 문자열 만들기 (0) | 2020.03.09 |
[C++] 프로그래머스 피보나치 수 (0) | 2020.03.09 |
[C++] 프로그래머스 최댓값과 최솟값 (0) | 2020.03.09 |
[C++] 프로그래머스 숫자의 표현 (0) | 2020.03.08 |
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- django clean
- 실시간 데이터베이스
- 장고 태그달기
- iOS 검은 화면
- 알파벳 카운팅
- django 태그
- cleaned_data
- iOS 화면 안나옴
- 까만 화면
- Django
- pythonanywhere배포
- django pythoneverywhere
- Realtime Database
- python 웹 배포
- 장고 게시판
- iOS 데이터베이스
- CellForRowAt 호출안됨
- django 개발일지
- CellForRowAt Not Called
- 데이터베이스 추천
- django tag
- 테이블출력안됨
- 웹 배포
- ModelForm Form 차이
- Firebase 데이터베이스 추천
- django 로그인접근
- UITableViewController Not Working
- iOS UITableView 출력안됨
- pythonanywhere배포방법
- django 게시판
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
글 보관함