최적의 행렬 곱셈 순서

면접 대비

시간 제한1초메모리 제한128 MB

요약
행렬 사슬의 각 행과 열 크기가 주어질 때, 전체 곱을 계산하는 데 필요한 최소 스칼라 곱셈 횟수를 구한다.
난이도

보통10점 중 4점

유형
동적 계획법, 행렬, 배열, 구현
정답자
아직 제출이 없습니다

문제

두 행렬 AA와 BB가 있을 때, 행렬 곱셈의 표준 정의에 따라 곱 C=A×BC = A \times B의 각 원소는 다음과 같이 정해진다.

Ci,j=∑kAi,k×Bk,jC_{i,j} = \sum_{k} A_{i,k} \times B_{k,j}

이 곱이 정의되려면 AA의 열 개수와 BB의 행 개수가 같아야 한다. 행렬 AA의 행 개수와 열 개수를 각각 rows(A)\text{rows}(A), cols(A)\text{cols}(A)로 표기하자. 결과 행렬 CC는 AA와 같은 수의 행, BB와 같은 수의 열을 가지며, CC 전체를 계산하는 데 필요한 스칼라 곱셈의 횟수는

rows(A)×cols(B)×cols(A)\text{rows}(A) \times \text{cols}(B) \times \text{cols}(A)

이다. 예를 들어 AA가 10×2010 \times 20 행렬이고 BB가 20×1520 \times 15 행렬이면, CC를 구하는 데 10×15×20=300010 \times 15 \times 20 = 3000번의 곱셈이 필요하다.

세 개 이상의 행렬을 곱할 때에는 계산 순서를 선택할 수 있다. 예컨대 세 행렬 X,Y,ZX, Y, Z의 곱 X×Y×ZX \times Y \times Z는 (X×Y)×Z(X \times Y) \times Z로 계산할 수도 있고 X×(Y×Z)X \times (Y \times Z)로 계산할 수도 있다. XX가 5×105 \times 10, YY가 10×2010 \times 20, ZZ가 20×3520 \times 35 행렬일 때 두 방식에 필요한 곱셈 횟수를 비교하면 다음과 같다.

(X×Y)×Z(X \times Y) \times ZX×(Y×Z)X \times (Y \times Z)
X×YX \times Y: 5×20×10=10005 \times 20 \times 10 = 1000번 (결과는 5×205 \times 20)Y×ZY \times Z: 10×35×20=700010 \times 35 \times 20 = 7000번 (결과는 10×3510 \times 35)
이어서 5×35×20=35005 \times 35 \times 20 = 3500번이어서 5×35×10=17505 \times 35 \times 10 = 1750번
합계: 45004500번합계: 87508750번

이처럼 계산 순서에 따라 필요한 곱셈 횟수가 달라진다. 곱해야 할 행렬들의 크기가 순서대로 주어질 때, 필요한 스칼라 곱셈 횟수가 최소가 되도록 계산 순서를 택했을 때의 그 최소 곱셈 횟수를 구하여라.

입력

입력은 여러 개의 테스트 케이스로 이루어진다. 각 테스트 케이스는 곱할 행렬의 개수를 나타내는 정수 NN으로 시작하고, 이어서 NN개의 정수 쌍이 주어진다. 각 쌍은 한 행렬의 행 개수와 열 개수를 나타내며, 주어지는 순서는 행렬을 곱하는 순서와 같다. NN은 1010을 넘지 않는다. NN이 00이면 입력의 끝을 의미한다. 인접한 두 행렬은 항상 곱셈이 가능하도록 크기가 맞추어져 주어진다.

출력

각 테스트 케이스마다, 모든 행렬을 곱하는 데 필요한 스칼라 곱셈 횟수의 최솟값을 한 줄에 출력한다. 각 줄 앞에는 Case X: 형식으로 케이스 번호를 붙이며, 번호는 11부터 차례대로 매긴다.

예제1

  1. 예제 1

    입력
    3
        1 5
        5 20
        20 1
    
    3
        5 10
        10 20
        20 35
    
    6
        30 35
        35 15
        15 5
        5 10
        10 20
        20 25
    
    0
    
    예상 출력
    Case 1: 105
    Case 2: 4500
    Case 3: 15125