๋ฌธ์ (์ถ์ฒ: https://www.acmicpc.net/problem/6245)
< Cow Solitaire >
๋ฌธ์ ํ์ด
์นด๋๋ฅผ ์ ์๋ฅผ ์ ์ฅํ ๋ค ์ผ์ชฝ ์๋ ์นธ์์ ์ค๋ฅธ์ชฝ, ์๋ก ์ด๋ํ๋ฉด์ ์ป์ ์ ์๋ ์ต๋ ์ ์๋ฅผ ๊ตฌํ๋ค.
my solution (Java)
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;
public class _6245_ { // Cow Solitaire
public static void main(String[] args) throws IOException {
BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st;
int n = Integer.parseInt(bf.readLine());
int arr[][] = new int[n][n];
int dp[][] = new int[n][n];
for (int i = 0; i < n; i++) {
st = new StringTokenizer(bf.readLine());
for (int j = 0; j < n; j++) {
String str = st.nextToken();
if (Character.isDigit(str.charAt(0))) {
arr[i][j] = str.charAt(0) - '0';
} else {
if (str.charAt(0) == 'A') {
arr[i][j] = 1;
} else if (str.charAt(0) == 'T') {
arr[i][j] = 10;
} else if (str.charAt(0) == 'J') {
arr[i][j] = 11;
} else if (str.charAt(0) == 'Q') {
arr[i][j] = 12;
} else if (str.charAt(0) == 'K') {
arr[i][j] = 13;
}
}
}
}
dp[n - 1][0] = arr[n - 1][0];
for (int i = n - 1; i >= 0; i--) {
for (int j = 0; j < n; j++) {
if (j - 1 >= 0) {
dp[i][j] = Math.max(dp[i][j], dp[i][j - 1] + arr[i][j]);
}
if (i + 1 < n) {
dp[i][j] = Math.max(dp[i][j], dp[i + 1][j] + arr[i][j]);
}
}
}
System.out.println(dp[0][n - 1]);
}
}
๋ณ์)
n : ๊ฒฉ์ ํฌ๊ธฐ
arr : ์นด๋ ์ ์
dp : ์ด๋ํ๋ฉด์ ์ป์ ์ ์๋ ์ต๋ ์ ์
๊ฒฉ์ ํฌ๊ธฐ๋ฅผ ์ ๋ ฅ๋ฐ๋๋ค. ๊ฒฉ์ ํฌ๊ธฐ๋งํผ ์นด๋ ๊ฐ์ ์ ๋ ฅ๋ฐ์ ์ ์๋ก ๋ณํํ ๋ค ๋ฐฐ์ด์ ์ ์ฅํ๋ค. ๋ง์ง๋ง ํ์ ์ผ์ชฝ๋ถํฐ ์์ํด์ ์ฒซ ๋ฒ์งธ ํ์ ์ค๋ฅธ์ชฝ๊น์ง ํ์ํ๋ฉฐ ๊ฐ ์์น์์ ์๋, ์ผ์ชฝ ๊ฐ์ ๋ํด ์ต๋ ์ ์๋ฅผ ๊ตฌํ๋ค.
์ต์ข ์ค๋ฅธ์ชฝ ์ ์นธ์ ์ถ๋ ฅํ๋ค.

'๐Algorithm > ๐ฅBaekjoon' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
| [Baekjoon] 27041_Leapcow (0) | 2026.04.08 |
|---|---|
| [Baekjoon] 14767_Flow Shop (0) | 2026.04.06 |
| [Baekjoon] 9844_Gecko (0) | 2026.04.02 |
| [Baekjoon] 30337_Linas ir mandarinai (0) | 2026.04.01 |
| [Baekjoon] 15407_How to Eat at a Buffet (0) | 2026.03.31 |