[ํ๋ก๊ทธ๋๋จธ์ค] ๐ฉโ๐ซ ํ๋ ฌ์ ๊ณฑ์ / Python
๐ฉโ๐ซ ํ๋ ฌ์ ๊ณฑ์ ๋ฌธ์ ํ์ด๋ณด๊ธฐ
๐ ๋์ ์ฝ๋
def solution(arr1, arr2):
answer = []
for idx1 in range(len(arr1)):
row = []
for idx2 in range(len(arr2[0])):
tmp = 0
for idx3 in range(len(arr1[0])):
tmp += arr1[idx1][idx3] * arr2[idx3][idx2]
row.append(tmp)
answer.append(row)
return answer
์ ํ ์กฐ๊ฑด์์ ๊ณฑํ ์ ์๋ ๋ฐฐ์ด๋ง ์ฃผ์ด์ง๋ค๊ณ ํ์ผ๋, ๋ ๋ฐฐ์ด์ A X B, B X C๋ก ํด๋ณด๊ฒ ์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ ๋ ํ๋ ฌ์ ๊ณฑ์ผ๋ก ๋์จ ๋ฐฐ์ด์ ํฌ๊ธฐ๋ A X C๊ฐ ๋ ๊ฒ์ ๋๋ค. ๊ฒฐ๊ณผ ๋ฐฐ์ด์ ์ผ์ชฝ ์๋ถํฐ ์ค๋ฅธ์ชฝ ์๋๊น์ง ๋ง๋ค์ด ๋๊ฐ๋ฉด ๋๋ ์ฌ์ด ๋ฌธ์ ์ ๋๋ค.
def solution(arr1, arr2):
A = len(arr1)
B = len(arr1[0])
C = len(arr2[0])
return [[sum([arr1[idx1][idx3] * arr2[idx3][idx2] for idx3 in range(B)]) for idx2 in range(C)] for idx1 in range(A)]
์ ๊ฐ ๋ง๋ ์ฝ๋์ ๋๋ก ์ง๋ ๋์๊ฐ๊ธด ํ์ง๋ง, for loop
๋ฅผ ์ด์ฉํ์ฌ list
๋ฅผ ์ข ๋ ์ฝ๊ฒ ๋ง๋ค์ด์ฃผ๋ ๋ฐฉ๋ฒ์ธ Python์ list comprehension
์ ์ด์ฉํด์ ์ข ๋ ๊ฐ๋จํ๊ฒ ๋ง๋ค์ด๋ณด๊ฒ ์ต๋๋ค.
def productMatrix(A, B):
return [[sum(a*b for a, b in zip(A_row,B_col)) for B_col in zip(*B)] for A_row in A]
ํ์ง๋ง ๋ ๊ฐ๋จํ๊ฒ ๋ง๋ค ์๋ ์์ต๋๋ค. arr2 ์ด์ ๋ํ ๋ฐฐ์ด์ zip(*B)
๋ฅผ ์ด์ฉํ๋ฉด ์ฝ๋๊ฐ ๊ฐ๋จํด์ง๋๋ค.
Written with StackEdit.
'Algorithm > Problem Solving' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
๋๊ธ
์ด ๊ธ ๊ณต์ ํ๊ธฐ
-
๊ตฌ๋
ํ๊ธฐ
๊ตฌ๋ ํ๊ธฐ
-
์นด์นด์คํก
์นด์นด์คํก
-
๋ผ์ธ
๋ผ์ธ
-
ํธ์ํฐ
ํธ์ํฐ
-
Facebook
Facebook
-
์นด์นด์ค์คํ ๋ฆฌ
์นด์นด์ค์คํ ๋ฆฌ
-
๋ฐด๋
๋ฐด๋
-
๋ค์ด๋ฒ ๋ธ๋ก๊ทธ
๋ค์ด๋ฒ ๋ธ๋ก๊ทธ
-
Pocket
Pocket
-
Evernote
Evernote
๋ค๋ฅธ ๊ธ
-
[ํ๋ก๊ทธ๋๋จธ์ค] ๐ฉโ๐ซ ๋ชจ์๊ณ ์ฌ / python
[ํ๋ก๊ทธ๋๋จธ์ค] ๐ฉโ๐ซ ๋ชจ์๊ณ ์ฌ / python
2019.02.15 -
[ํ๋ก๊ทธ๋๋จธ์ค] ๐จโ๐ซ ๊ฐ์ฅ ํฐ ์ ์ฌ๊ฐํ / Python
[ํ๋ก๊ทธ๋๋จธ์ค] ๐จโ๐ซ ๊ฐ์ฅ ํฐ ์ ์ฌ๊ฐํ / Python
2019.02.15 -
[ํ๋ก๊ทธ๋๋จธ์ค] โ ์ ํ๋ฒํธ ๋ชฉ๋ก / Python
[ํ๋ก๊ทธ๋๋จธ์ค] โ ์ ํ๋ฒํธ ๋ชฉ๋ก / Python
2019.02.14 -
[ํ๋ก๊ทธ๋๋จธ์ค] ๐ทโโ๏ธ ์ ๋ง๋๊ธฐ / Python
[ํ๋ก๊ทธ๋๋จธ์ค] ๐ทโโ๏ธ ์ ๋ง๋๊ธฐ / Python
2019.02.14