행렬 곱셈 순서
시간 제한1초메모리 제한256 MB
주어진 순서대로 N개 행렬을 곱할 때 스칼라 곱셈 횟수가 최소가 되는 괄호 배치를 구합니다.
문제
크기가 인 행렬 와 크기가 인 행렬 를 곱할 때 필요한 곱셈 연산은 모두 번이다. 행렬 여러 개를 곱할 때 필요한 곱셈 연산의 수는 곱하는 순서에 따라 달라진다.
의 크기가 , 의 크기가 , 의 크기가 인 경우에 곱 를 구하는 두 가지 순서를 보자.
- 를 먼저 곱한 다음 를 곱하면, 에 필요한 곱셈 연산은 번이다.
- 를 먼저 곱한 다음 앞에 를 곱하면, 에 필요한 곱셈 연산은 번이다.
결과 행렬은 같지만 곱하는 순서에 따라 연산 횟수가 달라진다.
행렬 개의 크기가 주어졌을 때, 모든 행렬을 곱하는 데 필요한 곱셈 연산 횟수의 최솟값을 구하는 프로그램을 작성하시오. 입력으로 주어진 행렬의 순서를 바꾸면 안 된다.
입력
첫째 줄에 행렬의 개수 이 주어진다. ()
둘째 줄부터 개 줄에 행렬의 크기 과 가 곱하는 순서대로 한 줄에 하나씩 주어진다. ()
주어진 순서 그대로 곱셈을 할 수 있는 크기만 입력으로 주어진다. 즉, 번째 행렬의 열 개수는 번째 행렬의 행 개수와 같다.
출력
첫째 줄에 입력으로 주어진 행렬을 모두 곱하는 데 필요한 곱셈 연산의 최솟값을 출력한다. 정답은 보다 작거나 같다. 최악의 순서로 곱해도 연산 횟수는 보다 작거나 같다.