๋ฌธ์ (์ถ์ฒ: https://www.acmicpc.net/problem/9844)
< Gecko >
๋ฌธ์ ํ์ด
์๋ ํ์ผ๋ก ๋ด๋ ค์ค๋ฉด์ ์ต๋๊ฐ์ ๊ตฌํ๋ค.
my solution (Java)
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;
public class _9844_ { // Gecko
public static void main(String[] args) throws IOException {
BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st = new StringTokenizer(bf.readLine());
int h = Integer.parseInt(st.nextToken());
int w = Integer.parseInt(st.nextToken());
int arr[][] = new int[h][w];
int dp[][] = new int[h][w];
for (int i = 0; i < h; i++) {
st = new StringTokenizer(bf.readLine());
for (int j = 0; j < w; j++) {
arr[i][j] = Integer.parseInt(st.nextToken());
if (i == 0) {
dp[i][j] = arr[i][j];
}
}
}
for (int i = 1; i < h; i++) {
for (int j = 0; j < w; j++) {
dp[i][j] = Math.max(dp[i][j], arr[i][j] + dp[i - 1][j]);
if (j - 1 >= 0) {
dp[i][j] = Math.max(dp[i][j], arr[i][j] + dp[i - 1][j - 1]);
}
if (j + 1 < w) {
dp[i][j] = Math.max(dp[i][j], arr[i][j] + dp[i - 1][j + 1]);
}
}
}
int result = 0;
for (int i = 0; i < w; i++) {
result = Math.max(result, dp[h - 1][i]);
}
System.out.println(result);
}
}
๋ณ์)
h, w : ๋ฒฝ์ ํฌ๊ธฐ
arr : ๊ฐ ํ์ผ์ ๋ชจ๊ธฐ ๊ฐ์
dp : ๊ฐ ์์น๊น์ง ๋จน์ ์ ์๋ ๋ชจ๊ธฐ ์ต๋ ๊ฐ์
result : ๋จน์ ์ ์๋ ๋ชจ๊ธฐ์ ์ต๋ ๊ฐ์
๋ฒฝ์ ํฌ๊ธฐ๋ฅผ ์ ๋ ฅ๋ฐ๋๋ค. ๋ฒฝ์ ํฌ๊ธฐ๋งํผ ๊ฐ ํ์ผ์ ๋ชจ๊ธฐ ๊ฐ์๋ฅผ ์ ๋ ฅ๋ฐ์ arr์ ์ ์ฅํ๋ค. dp ์ฒซ ํ์ arr ์ฒซ ํ ๊ฐ์ผ๋ก ์ ์ฅํ๊ณ ๋ค์ ํ๋ถํฐ ์, ์ผ์ชฝ ๋๊ฐ์ ์, ์ค๋ฅธ์ชฝ ๋๊ฐ์ ์๋ฅผ ์ดํด๋ณด๋ฉฐ ์ต๋๊ฐ์ผ๋ก ์ ๋ฐ์ดํธํ๋ค.
์ต์ข ๋ง์ง๋ง ํ ๊ฐ ์ค์์ ์ต๋๊ฐ์ ์ฐพ์ ์ถ๋ ฅํ๋ค.

'๐Algorithm > ๐ฅBaekjoon' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
| [Baekjoon] 14767_Flow Shop (0) | 2026.04.06 |
|---|---|
| [Baekjoon] 6245_Cow Solitaire (0) | 2026.04.03 |
| [Baekjoon] 30337_Linas ir mandarinai (0) | 2026.04.01 |
| [Baekjoon] 15407_How to Eat at a Buffet (0) | 2026.03.31 |
| [Baekjoon] 15287_Easy Quest (0) | 2026.03.30 |