๋ฌธ์
https://school.programmers.co.kr/learn/courses/30/lessons/12949
ํ๋ก๊ทธ๋๋จธ์ค
์ฝ๋ ์ค์ฌ์ ๊ฐ๋ฐ์ ์ฑ์ฉ. ์คํ ๊ธฐ๋ฐ์ ํฌ์ง์ ๋งค์นญ. ํ๋ก๊ทธ๋๋จธ์ค์ ๊ฐ๋ฐ์ ๋ง์ถคํ ํ๋กํ์ ๋ฑ๋กํ๊ณ , ๋์ ๊ธฐ์ ๊ถํฉ์ด ์ ๋ง๋ ๊ธฐ์ ๋ค์ ๋งค์นญ ๋ฐ์ผ์ธ์.
programmers.co.kr
ํ์ด
์ฌ์ค 'ํ๋ ฌ์ ๊ณฑ์ ' ์๋ฆฌ๋ง ์๊ณ ์๋ค๋ฉด ์ฌ์ด ๋ฌธ์ ๋ค.
ํ์ง๋ง ์ ํ๋์๋ฅผ ์๊ฐํ์์๋ ์ ํ ๊ธฐ์ตํ์ง ๋ชปํ๋ ๊ฐ๊ตฌ๋ฆฌ์๋ผ...๊ฐ ์๋ค.
์์ ๊ต์ฅํ ์ต์ํ๋ฐ ๋ง์ด๋คใ ใ
ํ๋ ฌ์ ๊ณฑ์ ๊ฐ๋
์ฐ์ ํ๋ ฌ a1, a2 ๊ฐ ์๋ค๊ณ ๊ฐ์ ํด๋ณด์.
a1์ ํ๋ ฌ์ด m x n, a2์ ํ๋ ฌ์ด n x p์ผ๋์๋ง ํ๋ ฌ์ ๊ณฑ์ ์ด ๊ฐ๋ฅํด์ง๋ค.
๋ค์๋งํด a1 x a2 ๋ฅผ ๊ณ์ฐํ๊ณ ์ถ๋ค๋ฉด a1์ ์ด == a2์ ํ ์ด์ด์ผํ๊ณ ,
a2 x a1 ์ ๊ณ์ฐํ๊ณ ์ถ๋ค๋ฉด a2์ ์ด == a1์ ํ ์ด์ด์ผํ๋ค.

๋ฐ๋ผ์ a1 x a2์ ๊ฒฐ๊ณผ ํ๋ ฌ์ a3๋ผ ํ์์๋, a3๋ m x p ํฌ๊ธฐ์ ํ๋ ฌ์ด ๋๋๊ฒ์ด๋ค.
๊ทธ๋์ ๊ณฑ์ ์ ์ด๋ป๊ฒํ๋๋.
a3์ 3ํ2์ด๊ฐ์ ์๊ณ ์ถ๋ค,
→ a1์ 3ํ๊ฐ๋ค * a2์ 2์ด๊ฐ๋ค
์ ๊ณ์ฐํด์ฃผ๋ฉด ๋๋ค.
๋ง์ฝ a1์ 3ํ์ด [3, 2, 1], a2์ 2์ด์ด ๊ฐ๊ฐ [5], [1], [2] ๊ฐ ๋๋ค๋ฉด 3*5 + 2*1 + 1*2 ์ ๊ฐ์ด a3์ 3ํ2์ด๊ฐ์ด ๋๋๊ฒ์ด๋ค.
# ํ๋ ฌ ๊ณฑ์
ํ๋๋ฒ!
# ret(11) == arr1(1n) * arr2(n1)
def solution(arr1, arr2):
# ret = [[0] * len(arr2[0])] * len(arr1) => ์ด๊ธฐํ ๋ฌธ์ .
ret = [[0 for _ in range(len(arr2[0]))] for _ in range(len(arr1))]
def matrix(row, col):
mat_sum = 0
for i in range(len(arr2)): # ์ฒ์์ len(arr1)๋ก ํ๋ค๊ฐ ๋ฐํ์ ์ค๋ฅ. ๋น์ฐํจ.
# len(ํ๋ ฌ1์ ์ด) == len(ํ๋ ฌ2์ ํ) ์ด์ด์ผ ํ๋ฏ๋ก arr1[0]์ด๋ arr2๋ฅผ ๋ฃ์ด์ผํ๋ค.
mat_sum += arr1[row][i] * arr2[i][col]
return mat_sum
for row in range(len(arr1)):
for col in range(len(arr2[0])):
ret[row][col] = matrix(row, col)
return ret
์ฒ์์ ret = [[0] * len(arr2[0])] * len(arr1) ๋ก ์ ์๋๋ ๋ต์ด [[29, 20, 14], [29, 20, 14], [29, 20, 14]] ๋ก ๋์๋ค.
๋ญ๋ผ๋๋ผ... ์๋ฌดํผ ์ฐธ์กฐ๋๋ฌธ์ด์๋๋ฐ. ๋ฆฌ์คํธ ์ปดํ๋ฆฌํจ์ ์ผ๋ก ์ด๊ธฐํ ํด์คฌ๋๋ ๋๋ค.
๊ทผ๋ฐ ํ ์คํธ 1๋ฒ์์ ๋ฑ! ๊ฑธ๋ ค๋ฒ๋ ธ๋ค.
๋์ ๋ฉ์ฒญํจ์ด ์๊ฐ ํ์ด๋์จ๊ฒ์ด์๋ค^^;
์๊น๋ ๋งํ๋ค์ํผ ํ๋ ฌ1์ ์ด == ํ๋ ฌ2์ ํ ์ด์ด์ผ ํ๋ค.
๋ฐ๋ผ์ ์ค๋ณต๋๋ ๊ฐ์ธ ํ1์ด ์ด๋ ํ2ํ ์ผ๋ก ๋ฐ๋ณต๋ฌธ์ ๋๋ ค์ผํ์๋ค.