๋ฌธ์ (์ถ์ฒ: https://www.acmicpc.net/problem/1937)
< ์์ฌ์์ด ํ๋ค >
๋ฌธ์ ํ์ด
์ฒ์์ dfs๋ง ํ์ฉํ์ฌ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋ ค๊ณ ํ์๋ค. ํ์ง๋ง ์๊ฐ ์ด๊ณผ๊ฐ ๋ฐ์ํ๊ณ dp๋ ํจ๊ป ์ฌ์ฉํด์ผ ํ๋ค๋ ๊ฒ์ ์๊ฒ ๋์๋ค. ์ด๋ฏธ dfs ํ์์ ํตํด ๊ฐ์ ๊ตฌํ๋ค๋ฉด ๋ฐฐ์ด์ ์ ์ฅํด ๋๊ณ ๋ค์ ํ์์ ํ์ง ์๋๋ก ๊ตฌํํ์ฌ ์๊ฐ์ ์ค์ด๋ ๋ฐฉ๋ฒ์ ํํ์๋ค.
- my solution (Java)
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;
public class Main {
static int arr[][], dp[][], n, result;
static int dx[] = { -1, 1, 0, 0 };
static int dy[] = { 0, 0, -1, 1 };
public static void main(String[] args) throws IOException {
BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st;
n = Integer.parseInt(bf.readLine());
arr = new int[n][n];
dp = new int[n][n];
result = 1;
for (int i = 0; i < n; i++) {
st = new StringTokenizer(bf.readLine());
for (int j = 0; j < n; j++) {
arr[i][j] = Integer.parseInt(st.nextToken());
dp[i][j] = 1;
}
}
for (int i = 0; i < n; i++) {
for (int j = 0; j < n; j++) {
dfs(i, j);
}
}
System.out.println(result);
}
private static int dfs(int i, int j) {
int max_value = 1;
for (int k = 0; k < 4; k++) {
int x = i + dx[k];
int y = j + dy[k];
if (x >= 0 && x < n && y >= 0 && y < n && arr[i][j] < arr[x][y]) {
if (dp[x][y] > 1) {
if (max_value < 1 + dp[x][y])
max_value = 1 + dp[x][y];
}
else {
int num = dfs(x, y);
if (max_value < 1 + num)
max_value = 1 + num;
}
}
}
dp[i][j] = max_value;
if (result < max_value)
result = max_value;
return dp[i][j];
}
}
- Main
- n : ๋๋๋ฌด ์ฒ ํฌ๊ธฐ ์ ๋ ฅ
- arr: ๋๋๋ฌด ์ฒ ์ ๋ณด ์ ๋ ฅ
- dp: ์ด๋ํ ์ ์๋ ์นธ์ ์ ๋ณด ์ ์ฅ
- arr์ ๋ํด์ ํ๋์ฉ ๋ค dfs ํ์ ํ ์ต๋๊ฐ ์ถ๋ ฅ
- dfs
- ํ์ฌ ์์น์์ ์ํ์ข์ฐ ํ์
- ๋๋๋ฌด ์ฒ ๋ฒ์ ์์ด๋ฉฐ ์ ์ง์ญ๋ณด๋ค ๋๋๋ฌด๊ฐ ๋ง๋ค๋ฉด ์ด๋
- ์ด๋ํ ์์น๊ฐ ์ด๋ฏธ ํ์๋ ์ง์ญ์ด๋ผ dp์ ๊ฐ์ด ์ ์ฅ๋์ด ์๋ค๋ฉด ๊ทธ ๊ฐ์ ํ์ฉํ์ฌ max๊ฐ ๊ตฌํ๊ธฐ/ ํ์ํ ๊ณณ์ด ์๋๋ผ๋ฉด dfs ํ์ ํ max ๊ฐ ๊ตฌํ๊ธฐ
- dp ๊ฐ ์ ๋ฐ์ดํธ ๋ฐ ์ต๋๊ฐ ์ ์ฅ
์๊ฐ๐ค
'๐Algorithm > ๐ฅBaekjoon' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Baekjoon] 16509_์ฅ๊ตฐ (1) | 2023.05.28 |
---|---|
[Baekjoon] 14217_๊ทธ๋ํ ํ์ (0) | 2023.05.26 |
[Baekjoon] 16954_์์ง์ด๋ ๋ฏธ๋ก ํ์ถ (0) | 2023.05.24 |
[Baekjoon] 2665_๋ฏธ๋ก๋ง๋ค๊ธฐ (0) | 2023.05.23 |
[Baekjoon] 27211_๋๋ ํ์ฑ (0) | 2023.05.21 |