크기가 N×M인 행렬 A와 크기가 M×K인 행렬 B를 곱할 때 필요한 곱셈 연산은 모두 N×M×K번이다. 행렬 여러 개를 곱할 때 필요한 곱셈 연산의 수는 곱하는 순서에 따라 달라진다.
A의 크기가 5×3, B의 크기가 3×2, C의 크기가 2×6인 경우에 곱 ABC를 구하는 두 가지 순서를 보자.
결과 행렬은 같지만 곱하는 순서에 따라 연산 횟수가 달라진다.
행렬 N개의 크기가 주어졌을 때, 모든 행렬을 곱하는 데 필요한 곱셈 연산 횟수의 최솟값을 구하는 프로그램을 작성하시오. 입력으로 주어진 행렬의 순서를 바꾸면 안 된다.
첫째 줄에 행렬의 개수 N이 주어진다. (1≤N≤500)
둘째 줄부터 N개 줄에 행렬의 크기 r과 c가 곱하는 순서대로 한 줄에 하나씩 주어진다. (1≤r,c≤500)
주어진 순서 그대로 곱셈을 할 수 있는 크기만 입력으로 주어진다. 즉, i번째 행렬의 열 개수는 i+1번째 행렬의 행 개수와 같다.
첫째 줄에 입력으로 주어진 행렬을 모두 곱하는 데 필요한 곱셈 연산의 최솟값을 출력한다. 정답은 231−1보다 작거나 같다. 최악의 순서로 곱해도 연산 횟수는 231−1보다 작거나 같다.