๋ฌธ์ (์ถ์ฒ: https://www.acmicpc.net/problem/15645)
< ๋ด๋ ค๊ฐ๊ธฐ 2 >
๋ฌธ์ ํ์ด
dp๋ฅผ ์ฌ์ฉํ์ฌ ํ์ฌ ์์น์์ ๋ฐ๋ก ์์ ์, ๋ฐ๋ก ์์ ์์ ๋ถ์ด์๋ ์๋ฅผ ์ดํด๋ณด๋ฉฐ ์ต๋ ์ ์, ์ต์ ์ ์๋ฅผ ๊ตฌํ๋ค.
my solution (Java)
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 _15645_ { // ๋ด๋ ค๊ฐ๊ธฐ 2
public static void main(String[] args) throws IOException {
BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
StringTokenizer st;
int n = Integer.parseInt(bf.readLine());
int arr[][] = new int[n][3];
int maxDp[][] = new int[n][3];
int minDp[][] = new int[n][3];
for (int i = 0; i < n; i++) {
st = new StringTokenizer(bf.readLine());
for (int j = 0; j < 3; j++) {
arr[i][j] = Integer.parseInt(st.nextToken());
minDp[i][j] = Integer.MAX_VALUE;
}
}
for (int i = 0; i < 3; i++) {
maxDp[0][i] = arr[0][i];
minDp[0][i] = arr[0][i];
}
for (int i = 1; i < n; i++) {
for (int j = 0; j < 3; j++) {
if (j - 1 >= 0) {
maxDp[i][j] = Math.max(maxDp[i][j], maxDp[i - 1][j - 1] + arr[i][j]);
minDp[i][j] = Math.min(minDp[i][j], minDp[i - 1][j - 1] + arr[i][j]);
}
if (j + 1 < 3) {
maxDp[i][j] = Math.max(maxDp[i][j], maxDp[i - 1][j + 1] + arr[i][j]);
minDp[i][j] = Math.min(minDp[i][j], minDp[i - 1][j + 1] + arr[i][j]);
}
maxDp[i][j] = Math.max(maxDp[i][j], maxDp[i - 1][j] + arr[i][j]);
minDp[i][j] = Math.min(minDp[i][j], minDp[i - 1][j] + arr[i][j]);
}
}
int max = Integer.MIN_VALUE, min = Integer.MAX_VALUE;
for (int i = 0; i < 3; i++) {
max = Math.max(max, maxDp[n - 1][i]);
min = Math.min(min, minDp[n - 1][i]);
}
bw.write(max + " " + min);
bw.flush();
}
๋ณ์)
n : ์ ๋ ฅ๊ฐ
arr : ๊ฒ์ ์ ์
maxDp, minDp : ์ต๋ ์ ์, ์ต์ ์ ์ ๊ตฌํ๊ธฐ ์ํ ๋ฐฐ์ด
max, min : ์ต๋ ์ ์, ์ต์ ์ ์
n์ ์ ๋ ฅ๋ฐ๋๋ค. n ์ค ๋งํผ ๊ฒ์ ์ ์๋ฅผ ์ ๋ ฅ๋ฐ์ ๋ฐฐ์ด arr์ ์ ์ฅํ๋ค. maxDp์ minDp์ 0๋ฒ์งธ ํ์ arr 0๋ฒ์งธ ํ์ผ๋ก ์ด๊ธฐํํ๊ณ , 1ํ ~ n-1ํ๊น์ง ([i-1][j-1]์์ ๋ด๋ ค์ค๊ธฐ, [i-1][j+1]์์ ๋ด๋ ค์ค๊ธฐ, [i-1][j]์์ ๋ด๋ ค์ค๊ธฐ) ์ค์ ์ต๋๊ฐ๊ณผ ์ต์๊ฐ์ ๊ตฌํด ๊ฐ ๋ฐฐ์ด์ ์ ์ฅํ๋ค.
์ต์ข maxDp์ minDp์ [n-1][i]๋ฅผ ํ์ํ๋ฉฐ ์ต๋ ์ ์์ ์ต์ ์ ์๋ฅผ ๊ตฌํด ์ถ๋ ฅํ๋ค.

'๐Algorithm > ๐ฅBaekjoon' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
| [Baekjoon] 6193_Hungry Cows (0) | 2026.01.16 |
|---|---|
| [Baekjoon] 11057_์ค๋ฅด๋ง ์ (0) | 2026.01.15 |
| [Baekjoon] 10844_์ฌ์ด ๊ณ๋จ ์ (0) | 2026.01.14 |
| [Baekjoon] 2688_์ค์ด๋ค์ง ์์ (0) | 2026.01.12 |
| [Baekjoon] 9711_ํผ๋ณด๋์น (0) | 2026.01.09 |