Tags
- ๊ทธ๋ํ ํ์
- Brute Force Algorithm
- sort
- ๊น์ด ์ฐ์ ํ์
- ๊ต์ฌ
- ์๋ฃ๊ตฌ์กฐ
- LV2
- greedy
- queue
- Java
- Dynamic Programming
- ๋๋น ์ฐ์ ํ์
- CodingTest
- ์ ๋ ฌ
- dfs
- Study
- ์๋ฎฌ๋ ์ด์
- BOJ
- ์ํ
- Python
- ์ ์๋ก
- SpringBoot
- ๊ตฌํ
- ๊ทธ๋ํ ์ด๋ก
- ๋ฌธ์์ด
- stack
- PGM
- ๋ฐฑํธ๋ํน
- DP
- BFS
Archives
๊ธฐ๋ก๋ฐฉ
BOJ_2096 : ๋ด๋ ค๊ฐ๊ธฐ ๋ณธ๋ฌธ
๐ธ ๋ฌธ์ ๋ถ์ ๐ธ
- N * 3 ๋ณด๋ํ์ ๋ด๋ ค๊ฐ๋ฉฐ ์ต๋,์ต์๊ฐ์ ๊ตฌํ๋ ๋ฌธ์ ์ด๋ค.
- ๋ด๋ ค๊ฐ ์ ์๋ ๋ฐฉ๋ฒ์ด 3๊ฐ์ง๊ฐ ์๋๋ฐ, ๋ธ๋ฃจํธํฌ์ค๋ก ๊ทธ๋ํ ํ์ํ๋ฉด ์๊ฐ์ด๊ณผ๊ฐ ๋๋ค.
- ๋ด๋ ค๊ฐ๋ ๋ฐฉ๋ฒ์ด ์๋, ์ญ์ผ๋ก ์ด์ ์ค์ ๋ณด๊ณ ์ต๋/์ต์๊ฐ์ ๊ณ ๋ฅด๋ DP ๋ฐฉ์์ผ๋ก ํ์ดํ ์ ์๋ค.
๐ธ ์ฝ๋ ๐ธ
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.util.StringTokenizer;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
StringBuilder sb = new StringBuilder();
StringTokenizer st = null;
int N = Integer.parseInt(br.readLine());
int[][] map = new int[N + 1][3];
int[][][] dp = new int[N + 1][3][2];
for (int i = 1; i <= N; i++) {
st = new StringTokenizer(br.readLine());
for (int j = 0; j < 3; j++) {
map[i][j] = Integer.parseInt(st.nextToken());
}
}
int[][] dy = {{0, 1}, {-1, 0, 1}, {-1, 0}};
int max, min;
for (int i = 1; i <= N; i++) {
for (int j = 0; j < 3; j++) {
max = 0;
min = Integer.MAX_VALUE;
for (int k = 0; k < dy[j].length; k++) {
max = Math.max(max, dp[i - 1][j + dy[j][k]][0]);
min = Math.min(min, dp[i - 1][j + dy[j][k]][1]);
}
dp[i][j][0] = max + map[i][j];
dp[i][j][1] = min + map[i][j];
}
}
max = 0;
min = Integer.MAX_VALUE;
for (int i = 0; i < 3; i++) {
max = Math.max(max, dp[N][i][0]);
min = Math.min(min, dp[N][i][1]);
}
sb.append(max).append(' ').append(min);
bw.write(sb.toString());
bw.flush();
}
}
๐ธ ์ฝ๋ ํด์ ๐ธ
- ๋ณด๋ํ์ ๊ฐ์ค์น ์ ๋ณด๋ฅผ ์
๋ ฅ๋ฐ๊ณ , ๋ด๋ ค๊ฐ๋ 3๊ฐ์ง ๋ฐฉ๋ฒ์ ๋ํด dy์ ์ ์ฅํ๋ค.
(์ค์ ๋ก๋ ์ฌ๋ ค๋ค๋ณด๋ ๋ฐฉ์์ผ๋ก ์ฌ์ฉํ๋ค) - N์ค์ ํ๋์ฉ ๋ด๋ ค๊ฐ๋ฉฐ ๊ณ์ฐ์ ๋ฐ๋ณตํ๋ค.
- ๊ฐ๋ก 3์นธ์ ๊ธฐ์ค์ผ๋ก ์ด์ ์ค์์ ์ฌ ์ ์๋ ๊ฐ์ ์ต๋/์ต์๊ฐ์ ๊ตฌํ๋ค.
- ๊ตฌํ ๊ฐ ์นธ์ ์ต๋/์ต์๊ฐ + ํด๋น ์นธ์ ๋ณด๋ํ ๊ฐ์ค์น๋ฅผ ์ ์ฅํ๋ค.
- ๊ฐ์ฅ ์๋์ค์์ ์ต๋/์ต์๊ฐ์ ๊ตฌํด ์ถ๋ ฅํ๋ค.
๐ธ end ๐ธ
- ์ฒ์์ DFS + ๋ฉ๋ชจ์ด์ ์ด์
์ผ๋ก ์ ๊ทผํ๋๋ฐ ์๊ฐ์ด๊ณผ๊ฐ๋์ ์ง๋ฌธ์ ์ฐธ๊ณ ํด DP๋ก ๋ณ๊ฒฝํ๋ค.
- ์ฝํ ๋ฅผ ์ค๋๋ง์ ํ์ด์ ๊ฐ๋จํ DP์ธ๋ฐ ์๊ฐํ์ง ๋ชปํ ๊ฒ ๊ฐ๋ค.
- ๋ฌธ์ ํ๊ทธ์ ์ฌ๋ผ์ด๋ฉ์๋์ฐ๊ฐ ์๋๋ฐ, ๋ด๊ฐ ์๋ ๋ฐฉ์์ ํ์ด๊ฐ ๋ฐ๋ก ์๋๊ฒ ์๋๋ผ์ ๋ฌด์จ ๋ป์ผ๊น ์ฐพ์๋ณด์๋ค.
- dp์์ ํ ์ด๋ธ์ ์ฌํ์ฉํ๋ฉด์ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ์๋ผ๋ (ํํ ํ ๊ธ๋ง์ด๋ผ๊ณ ๋ ๋ถ๋ฆฌ๋) ํ ํฌ๋์ ์ฌ๋ผ์ด๋ฉ ์๋์ฐ๋ผ๊ณ ๋ถ๋ฆฌ๋ ํ๋ค๊ณ ํ๋ค. (์ง๋ฌธ)
728x90
'CodingTest > Java' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
BOJ_2448 : ๋ณ ์ฐ๊ธฐ - 11 (0) | 2023.08.28 |
---|---|
BOJ_2206 : ๋ฒฝ ๋ถ์๊ณ ์ด๋ํ๊ธฐ (0) | 2023.08.06 |
BOJ_1918 : ํ์ ํ๊ธฐ์ (0) | 2023.07.09 |
BOJ_1753 : ์ต๋จ๊ฒฝ๋ก (0) | 2023.07.02 |
BOJ_1504 : ํน์ ํ ์ต๋จ ๊ฒฝ๋ก (0) | 2023.06.28 |