n * n의 숫자 행렬이 있을때, 오른쪽, 아래로만 이동할 수 있는데
(1, 1)에서 (n, n)까지의 경로에서의 최소값의 최대값을 구하라
int[][] dp = new int[n][n];
dp[0][0] = matrix[0][0];
for (int i = 0; i < n; i++) {
for (int j = 0; j < n; j++) {
if (i == 0 && j == 0) continue;
int fromTop = (i > 0) ? Math.min(dp[i - 1][j], matrix[i][j]) : Integer.MIN_VALUE;
int fromLeft = (j > 0) ? Math.min(dp[i][j - 1], matrix[i][j]) : Integer.MIN_VALUE;
dp[i][j] = Math.max(fromTop, fromLeft);
}
}
System.out.println(dp[n - 1][n - 1]);