[백준] 2740번 행렬 곱셈

거북이·2023년 1월 3일
0

백준[실버5]

목록 보기
39/114
post-thumbnail

💡문제접근

대학 전공과목이었던 AI기초프로그래밍의 수업 내용을 기억하여 행렬의 곱셈을 돌려 보았다.
행렬의 곱셈을 수행할 때는 먼저 나온 행렬의 가로줄과 뒤에 나온 행렬의 세로줄의 요소를 대응시켜 곱셈 연산읗 수행하면 된다.
N×M 행렬과 M×K 행렬을 곱하면 N×K 행렬의 형태가 갖춰진다.
행렬을 읽는 방법 : N×M → N행 M열(가로 M, 세로 N)

💡코드(메모리 : 30616KB, 시간 : 164ms)

N, M = map(int, input().split())
A = []
for _ in range(N):
    A.append(list(map(int, input().split())))

B = []
M, K = map(int, input().split())
for _ in range(M):
    B.append(list(map(int, input().split())))

C = [[0] * K for _ in range(N)]
for n in range(N):
    for k in range(K):
        for m in range(M):
            C[n][k] += A[n][m] * B[m][k]

for a in range(N):
    for b in range(K):
        print(C[a][b], end = " ")
    print("")

💡소요시간 : 1h ↑

📌 단순한 문제였는데 행렬에 대한 기본 개념이 부족해서 행렬 곱셈 기본 이론부터 다시 보고 돌려보느라 시간이 많이 지체되었다.

📌 행렬 곱셈의 주의 사항 : (N×M)행렬과 (M×N)행렬을 곱한 결과와 (M×N)행렬과 (N×M)행렬을 곱한 결과는 다르다.

0개의 댓글