Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- 대시보드
- flourish 사용법
- Programmers
- 유사도
- 스마트팜
- DTW
- solvesql
- 생육
- Algorithm
- 인터랙티브 차트
- 자동화
- 농촌진흥청
- join
- SQL
- 농정원
- streamlit cloud
- flourish 차트 만들기
- streamlit
- 농림수산식품교육문화정보원
- 스마트팜코리아
- 시계열 시각화
- ML
- psycopg
- 데이터
- 공유
- 웹앱
- 데이터분석
- Python
- group by
- 순위 변화 그래프
Archives
- Today
- Total
Positive-Influence-Data
[Algorithm] 행렬의 곱셈(python) 본문
❗ 본 포스팅은 Programmers의 코딩테스트 연습문제를 활용합니다. 다양한 문제를 풀어보고 싶다면
Programmers를 방문하세요.
행렬의 곱셈이라는 문제이다.
이 문제를 풀기 위해서 우리는 행열의 연산을 알아야한다.
고등학교, 대학교때 배운 행렬의 곱셈을 떠올려보자.
행렬의 곱셈이 가능하려면 위의 그림처럼 행렬 A의 행 k와 행렬 B의 열 k가 같아야한다. 그래야 연산이 가능하다.
** 문제에서는 곱할 수 있는 행렬만 주어진다고 했으니 크게 고려할 사항은 아니다.
연산과정을 보면 a11*b11 + a12*b21 이 계산되어 하나의 원소가 만들어진다. 이런식으로 전부 계산하게 된다.
그렇다면 우리는 어떻게 문제를 풀어야 할까?
1. 연산되어 나오는 행렬의 사이즈(M*N)만큼 전부 0으로 초기화해준다.
문제 예제1의 경우 [[0,0],[0,0],[0,0]]이 될 것이다.
2. 행렬의 모든 원소들을 하나하나 접근해서 곱하고 우리가 만든 배열의 위치에 맞게 더해준다.
문제 예제1의 경우 아래와 같은 과정을 통해서 만들어지게됨.
코드를 보면 아래와 같다.
def solution(arr1, arr2):
answer = [[0 for i in range(len(arr2[0]))] for j in range(len(arr1))] # 배열초기화
# 하나씩 접근하는 과정
for i in range(len(arr1)):
for j in range(len(arr2[0])):
for z in range(len(arr1[0])):
answer[i][j]+=(arr1[i][z]* arr2[z][j]) # 원소를 배열의 해당위치에 더해줌
return answer
'Algorithm' 카테고리의 다른 글
[Algorithm] 주식가격(python) (0) | 2022.11.30 |
---|---|
[Algorithm] 숫자 짝꿍(python) (0) | 2022.11.25 |
Comments