import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.StringTokenizer;
public class BOJ1987 {
static char[][] grid;
// 4방 탐색용 delta
static int[][] delta = { { -1, 0 }, { 1, 0 }, { 0, -1 }, { 0, 1 } };
static int r, c, cnt, visited, max = Integer.MIN_VALUE;
public static void main(String[] args) throws Exception {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st = new StringTokenizer(br.readLine());
r = Integer.parseInt(st.nextToken());
c = Integer.parseInt(st.nextToken());
cnt = 0;
grid = new char[r][];
for (int i = 0; i < r; i++) {
grid[i] = br.readLine().toCharArray();
}
visited = 0;
runHorse(0, 0);
System.out.println(max);
}
private static void runHorse(int row, int col) {
char curVal = grid[row][col];
visited |= 1 << curVal - 'A';
cnt++;
// 현재 위치에서 4방 탐색
for (int i = 0; i < 4; i++) {
int nRow = row + delta[i][0];
int nCol = col + delta[i][1];
if (nRow >= 0 && nRow < r && nCol >= 0 && nCol < c) {
if ((visited & 1 << (grid[nRow][nCol] - 'A')) == 0) {
runHorse(nRow, nCol);
}
}
}
// 재귀 호출 완료 됐을 때의 cnt값과 max 값 비교
max = Math.max(max, cnt--);
visited -= 1 << curVal - 'A';
}
}
자꾸 감으로 하는 거 같은데 이래도 되나..
'온라인 저지 > BOJ' 카테고리의 다른 글
[BOJ/Java] 9663 N-Queen (0) | 2022.02.18 |
---|---|
[BOJ/Java] 1931 회의실 배정 (0) | 2022.02.18 |
[BOJ/Java] 3109 빵집 (0) | 2022.02.18 |
[BOJ/Java] 17298 오큰수 (0) | 2022.02.17 |
[BOJ/Java] 1992 쿼드트리 (0) | 2022.02.17 |
댓글