Skip to content

Commit 40672de

Browse files
authored
[20250614] BOJ / G3 / 행렬 곱셈 순서 / 이강현
1 parent 0390e11 commit 40672de

File tree

1 file changed

+40
-0
lines changed

1 file changed

+40
-0
lines changed
Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
```java
2+
import java.io.*;
3+
import java.util.*;
4+
5+
public class Main {
6+
static BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
7+
static BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
8+
static StringTokenizer st;
9+
static int N;
10+
static int[] rows;
11+
static int[] cols;
12+
static int[][] dp;
13+
14+
public static void main(String[] args) throws IOException {
15+
N = Integer.parseInt(br.readLine());
16+
rows = new int[N+1];
17+
cols = new int[N+1];
18+
for (int i = 1; i <= N; i++) {
19+
st = new StringTokenizer(br.readLine());
20+
rows[i] = Integer.parseInt(st.nextToken());
21+
cols[i] = Integer.parseInt(st.nextToken());
22+
}
23+
dp = new int[N+1][N+1];
24+
25+
for (int len = 2; len <= N; len++) { //구간
26+
for (int i = 1; i <= N - len + 1; i++) { //시작점
27+
int j = i + len - 1; //끝점
28+
dp[i][j] = Integer.MAX_VALUE;
29+
30+
for (int k = i; k < j; k++) { //분할지점
31+
int num = dp[i][k] + dp[k+1][j] + rows[i]*cols[k]*cols[j];
32+
dp[i][j] = Math.min(dp[i][j], num);
33+
}
34+
}
35+
}
36+
bw.write(dp[1][N] + "\n");
37+
bw.close();
38+
}
39+
}
40+
```

0 commit comments

Comments
 (0)