A1, A2, A3 이 세 행렬이 있고, A1은 3*5 A2는 5*1 A3는 1*2 행렬이라고 합시다. 행렬의 곱셈에서도 결합법칙은 성립하는데, 위 예시에서는 (A1*A2)*A3, A1*(A2*A3) 이 두 가지가 가능합니다. 그런데, 앞 식에서는 3*5*1 + 3*1*2 = 21번 연산, 뒷 식에서는 5*1*2 + 3*5*2 = 40번을 연산하게 됩니다. 즉 행렬의 곱셈은 연산 순서에 따라 연산 횟수가 달라지게 됩니다. 이때 최소 연산 횟수와 연산 순서를 구하는 알고리즘이 연쇄 행렬 곱셈 알고리즘입니다. 코드는 다음과 같습니다. int chainedMatrix(int n, int d[], int P[][N]){ int dp[N][N] = {}; for(int diag=1; diag A1 * ((A2 *..