import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.StringTokenizer;
public class boj1987 {
static BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
static boolean[] isUsed = new boolean[26]; // 알파벳 길이만큼 'A' -> 0
static char[][] graph;
static int R,C,answer = 0;
static int[] dx = {-1,0,0,1};
static int[] dy = {0,-1,1,0};
private static void dfs(int i,int j, int depth) {
if(answer < depth) {
answer = depth;
}
for(int idx = 0; idx < 4; idx++) {
int x_ = i + dx[idx];
int y_ = j + dy[idx];
if(0 <= x_ && x_ < R && 0 <= y_ && y_ < C) {
if(isUsed[graph[x_][y_] - 'A'] == false) {
isUsed[graph[x_][y_] - 'A'] = true;
dfs(x_,y_,depth+1);
isUsed[graph[x_][y_] - 'A'] = false;
}
}
}
}
public static void main(String[] args) throws Exception{
StringTokenizer st;
st = new StringTokenizer(in.readLine()," ");
R = Integer.parseInt(st.nextToken());
C = Integer.parseInt(st.nextToken());
// 그래프에 담기
graph = new char[R][C];
for(int i = 0; i < R; i++) {
String input = in.readLine();
for(int j = 0; j < C; j++) {
graph[i][j] = input.charAt(j);
}
}
isUsed[graph[0][0] - 'A'] = true;
dfs(0,0,1);
System.out.println(answer);
}
}
재귀 호출을 할 때 ++depth 를 하니 값이 제대로 안나와서 depth + 1 로 고쳐서 풀었다.
생각해보니 반복문을 돌면서 전위, 후위연산자는 변수에 값이 더해졌다.
전/후위연산자를 사용할 때에는 잘 생각해보고 사용하자!!