내용으로 건너뛰기
테페리넷
사용자 도구
등록
로그인
사이트 도구
검색
도구
문서 보기
Fold/unfold all
역링크
미디어 관리자
사이트맵
등록
로그인
>
미디어 관리자
사이트맵
현재 위치:
테페리넷
»
Problem Solving
»
문제
»
프로그래머스
»
최적의 행렬 곱셈
ps:problems:programmers:12942
이 문서는 읽기 전용입니다. 원본을 볼 수는 있지만 바꿀 수는 없습니다. 문제가 있다고 생각하면 관리자에게 문의하세요.
====== 최적의 행렬 곱셈 ====== ===== 풀이 ===== * 동적 계획법의 유명한 문제인 [[ps:구간 분할 방식에 관한 DP#연쇄 행렬 곱셈]]문제이다. * O(nlogn) 알고리즘이 최적으로 알려져 있지만, 여기에서는 교과서에서 알려주는 O(n^3) 알고리즘으로 풀었다. * 추후에 O(nlogn) 알고리즘을 구현해보고 업데이트 예정. * BOJ의 [[ps:problems:boj:11049|행렬 곱셈 순서]]도 동일한 문제이지만, n<500 이라서 코드를 조금 더 최적화시켜야 통과 가능하다. ===== 코드 ===== <dkpr py> """Solution code for "Programmers 12942. 최적의 행렬 곱셈". - Problem link: https://programmers.co.kr/learn/courses/30/lessons/12942 - Solution link: http://www.teferi.net/ps/problems/programmers/12942 """ def solution(matrix_sizes): n = len(matrix_sizes) dp = [[0] * n for _ in range(n)] for l in range(1, n): for i in range(n - l): j = i + l dp[i][j] = min( dp[i][k] + dp[k + 1][j] + matrix_sizes[i][0] * matrix_sizes[k][1] * matrix_sizes[j][1] for k in range(i, j)) return dp[0][-1] </dkpr> {{tag>프로그래머스 ps:problems:programmers:Level_4}}
ps/problems/programmers/12942.txt
· 마지막으로 수정됨: 2021/03/04 14:06 저자
teferi
문서 도구
문서 보기
역링크
Fold/unfold all
맨 위로