Tags
- queue
- ๋๋น ์ฐ์ ํ์
- ๊น์ด ์ฐ์ ํ์
- ๋ฐฑํธ๋ํน
- ์ ๋ ฌ
- ์ํ
- SpringBoot
- Python
- Brute Force Algorithm
- Java
- dfs
- ๊ตฌํ
- DP
- ๊ทธ๋ํ ํ์
- ๊ทธ๋ํ ์ด๋ก
- ์๋ฎฌ๋ ์ด์
- PGM
- stack
- ์ ์๋ก
- BFS
- Dynamic Programming
- LV2
- ๋ฌธ์์ด
- sort
- ๊ต์ฌ
- CodingTest
- Study
- greedy
- BOJ
- ์๋ฃ๊ตฌ์กฐ
Archives
๊ธฐ๋ก๋ฐฉ
BOJ_11049 : ํ๋ ฌ ๊ณฑ์ ์์ ๋ณธ๋ฌธ
๐ธ ๋ฌธ์ ๋ถ์ ๐ธ
- N๊ฐ์ ํ๋ ฌ์ ๊ณฑ์ ๊ณ์ฐํ๋ ค๊ณ ํ๋ค. ํ๋ ฌ์ ๊ณฑ์ ๊ณฑ์ ์ฐ์ฐ์ ์์์ ๋ฐ๋ผ ์ฐ์ฐ ํ์๊ฐ ๋ฌ๋ผ์ง๋ค.
- ํ๋ ฌ๊ณฑ ์ฐ์ฐ์ ์ต์๊ฐ์ ์ถ๋ ฅํ๋ค.
๐ธ ๋ฌธ์ ํ์ด ๐ธ
- ๋ค์ด๋๋ฏน ํ๋ก๊ทธ๋๋ฐ์ผ๋ก ํ์ดํ ์ ์๋ค.
- dp๋ฐฐ์ด๋ก intํ 2์ฐจ์ ๋ฐฐ์ด์ ๋ง๋ค์ด dp[i][j] : i ~ j ๋ฒ ํ๋ ฌ ๊ณฑ์ ์ฐ์ฐ ์ ์ต์๊ฐ์ ์ ์ฅํ๋ค.
- i ~ j ์ ํฌ๊ธฐ size๋ฅผ 2 ์ด์๋ถํฐ N ์ดํ๊น์ง ๋๋ ค๊ฐ๋ฉฐ dp ๋ฐฐ์ด์ ์ฑ์๊ฐ๋ค.
- i == j (size == 1) ์ผ ๋, dp[i][j]๋ 0์ด๋ค.
- ์ต๋ intํ๋ง ์ฌ์ฉ๋๋ค๊ณ ๋ฌธ์ ์์ ๋ํ๋ด์ฃผ์๋ค.
๐ธ ์ฝ๋ ๐ธ
import java.io.*;
import java.util.StringTokenizer;
public class Main {
public static void main(String[] args) throws IOException {
// Input
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
StringTokenizer st;
int N = Integer.parseInt(br.readLine());
int[][] matrix = new int[N][2];
for (int i = 0; i < N; i++) {
st = new StringTokenizer(br.readLine());
matrix[i][0] = Integer.parseInt(st.nextToken());
matrix[i][1] = Integer.parseInt(st.nextToken());
}
// Dynamic Programming
int[][] dp = new int[N][N];
for (int gap = 2; gap <= N; gap++) { // ์ธ๋ฑ์ค ์ฐจ์ด ํฌ๊ธฐ
for (int start = 0; start <= N - gap; start++) { // ์์ ์ธ๋ฑ์ค
int end = start + gap - 1; // ๋ ์ธ๋ฑ์ค
dp[start][end] = Integer.MAX_VALUE;
for (int i = start; i < end; i++) { // ์๋ฅด๊ธฐ ์ธ๋ฑ์ค
dp[start][end] = Math.min(dp[start][end],
dp[start][i] + dp[i + 1][end] + matrix[start][0] * matrix[i][1] * matrix[end][1]);
}
}
}
// Output
bw.write(Integer.toString(dp[0][N - 1]));
bw.flush();
}
}
๐ธ ์ฝ๋ ํด์ ๐ธ
- ํ๋ ฌ์ ๊ฐ๋ก ์ธ๋ก ํฌ๊ธฐ๋ฅผ matrix ๋ฐฐ์ด์ ์ ์ฅํ๋ค.
- N * N ํฌ๊ธฐ์ dp ๋ฐฐ์ด์ ๋ง๋ค์ด ๋ค์๊ณผ ๊ฐ์ ๊ณ์ฐ์ผ๋ก ์ฑ์๊ฐ๋ค.
- ์์ ์ธ๋ฑ์ค์ ๋ ์ธ๋ฑ์ค์ ์ฐจ์ด๋ฅผ 2๋ถํฐ N๊น์ง ๋๋ ค๊ฐ๋ฉฐ ๊ณ์ฐํ๋ค.
- dp[์์ ์ธ๋ฑ์ค][๋ ์ธ๋ฑ์ค] ์ ์ต์๊ฐ์ ์ฑ์๊ฐ๋ค. ์ฌ๊ธฐ์ ๊ฐ ์ธ๋ฑ์ค๋ฅผ ๊ธฐ์ค์ผ๋ก ์๋ผ ๋ณด๋ฉฐ ๊ณ์ฐํ๋ค.
- ์ธ๋ฑ์ค๋ฅผ ์๋์๋ ํ๋ ฌ ๊ณฑ์ matrix[start][0] * matrix[i][1] * matrix[end][1] ํํ๋ก ๊ณ์ฐ ํ์๋ฅผ ์นด์ดํธ ํ ์ ์๋ค.
(์ ํ๋ ฌ์ ํ, ์ค๊ฐ ์๋ฅด๊ธฐ ํ๋ ฌ์ ์ด, ๋ท ํ๋ ฌ์ ์ด ํฌ๊ธฐ์ ๊ณฑ)
- ๋ชจ๋ dp ๋ฐฐ์ด์ ์ฑ์ ์ผ๋ฉด, ๊ตฌํ๊ณ ์ ํ๋ 0 ~ (N-1) ์ ํ๋ ฌ๊ณฑ ์ฐ์ฐ ์ต์๊ฐ์ธ dp[0][N-1] ๋ฅผ ์ถ๋ ฅํ๋ค.
๐ธ end ๐ธ
- ์ด๋ ค์ ๋ ๋ฌธ์ ์๋ค. dp์ธ๊ฑด ์ด๋์ ๋ ์์์ง๋ง, 2์ฐจ์ ๋ฐฐ์ด๋ก ๋ํ๋ด๊ณ ์ ํ๋ ์์ด๋์ด๊ฐ ๋ ์ค๋ฅด์ง ์์์ ์ ํ์ ๋ถ๋ถ์ ๊ฒ์ํด๋ณธ ๋ค ํ์ดํ ์ ์์๋ค.
- ์ ํ์ ๋ถ๋ถ์ ๋ช ํํ ์ฐ๊ธฐ ์ด๋ ค์ด๋ฐ, ๋ฒ์๋ฅผ ์๋ผ์ ์ฐ์ฐ์๋ฅผ ๊ณ์ฐํ๊ณ , ๋ ์๋ฆฐ ํ๋ ฌ๊ณฑ์ ์๋ก ๊ณฑํ ๋์ ์ฐ์ฐ ํ์๋ง ๋ํด์ฃผ๋ฉด ๋๋ค. ๊ทธ๋ฆผ์ผ๋ก ๊ทธ๋ ค๋ณด๋ ๋ฐ๋ก ์ดํด๊ฐ ๋์ด์ ํ๋ฒ์ ํต๊ณผํ ์ ์์๋ค.
728x90
'CodingTest > Java' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
BOJ_15685 : ๋๋๊ณค ์ปค๋ธ (0) | 2024.05.26 |
---|---|
BOJ_11066 : ํ์ผ ํฉ์น๊ธฐ (0) | 2024.05.24 |
BOJ_9466 : ํ ํ๋ก์ ํธ (0) | 2024.05.23 |
BOJ_1062 : ๊ฐ๋ฅด์นจ (0) | 2024.05.20 |
[ํ๊ธฐ] ํ๋ก๊ทธ๋๋จธ์ค ์ฝ๋ฉ์ ๋ฌธ์ญ๋์ธ์ฆ(PCCP) Lv3 ์ทจ๋ (0) | 2024.05.20 |