Skip to content

Conversation

Messe7654
Copy link
Collaborator

소요시간

5분

사용한 자료구조, 알고리즘

List, 행렬곱

해당 자료구조, 알고리즘을 사용한 근거

문제의 요구사항이 행렬곱이었고,
그 중간과정에서 List를 제외한 다른 자료구조가 필요해 보이지 않았음

어려웠던 구현 포인트

.

구현한 코드의 시간 복잡도

O(N^3)

추가한 테스트 케이스와 그 이유

.

개선이 필요한 부분은?

.

Copy link
Contributor

👋 @Messe7654 님 안녕하세요!
코딩 테스트 합격자 되기(파이썬 편) : 문제 005 를 풀고 있으시네요!
해당 문제의 책 페이지와 프로그래머스 링크를 알려드릴께요!

05장 배열
행렬의 곱셈 ⭐
코딩 테스트 합격자 되기(파이썬 편) - p113
프로그래머스 link

  1. 테스트가 실패한 경우 다시 한번 문제를 풀어서 push 해보세요!
  2. 로컬에서 디버깅도 해보고 스스로 코멘트를 달면서 공부해보세요!
  3. 다시 한번 문제를 풀어서 push 해보세요!

Copy link
Contributor

🎉 @Messe7654 님. 축하 합니다!

문제 005 테스트를 통과하셨습니다!
solutons 브랜치에 Merge 해주세요!

도움이 필요한 사람들이 있으면 도와주세요! 소통하면서 더 성장 할 수 있는 좋은 기회입니다!
문제 005 - 도움주러 가기

@github-actions github-actions bot added Pass 테스트에 성공했습니다. Merge 해주세요! 문제005 labels Jan 29, 2024
Copy link
Contributor

✨ 아래의 코드는 테스트를 통과한 코드입니다.

from typing import List

def solution(
    arr1: List[List[int]],
    arr2: List[List[int]]
    ) -> List[List[int]]:
    '''
    :param arr1 (List[List[int]]) : 행렬
    :param arr2 (List[List[int]]) : 행렬
    :output List[List[int]] : 행렬곱 연산의 결과값
    '''
    arr1_shape = (len(arr1), len(arr1[0]))
    arr2_shape = (len(arr2), len(arr2[0]))

    # (U * W) X (W * V) 는 (U * V)의 shape를 갖는 행렬이 된다.
    ret = [[0] * arr2_shape[1] for i in range(arr1_shape[0])]
    
    for r in range(arr1_shape[0]):
        for c in range(arr2_shape[1]):
            for i in range(arr1_shape[1]):
                ret[r][c] += arr1[r][i] * arr2[i][c]           

    return ret

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Pass 테스트에 성공했습니다. Merge 해주세요! 문제005
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant