❗ 풀이과정
- map 배열에 알파벳 저장
- 방문했던 알파벳이라면 isVisited라는 배열에 알파벳 저장
- isVisited 배열은 맨 처음에는 static 변수로 선언했지만, 그렇게하면 방문했던 알파벳이 누적이 되었기 때문에, 함수의 매개변수로 선언!
- 방향을 나타내는 dx, dy 배열을 사용하여, ➡⬇⬅⬆ 순으로 map 탐색
- 4방 탐색을 다 완료했다면, 최종 결과값인 result 변수에 최댓값 저장!
🤜 풀이 코드
import java.util.Scanner;
public class Main {
static int [] dx = {1,0,-1,0};
static int [] dy = {0,-1,0,1};
static char [][] map;
static int R,C,result;
static void getMaxDist(int x, int y, int d, char [] isVisited,int v_idx) {
for(int i=0;i<v_idx;i++) {
if(isVisited[i]==map[y][x]) return;
}
isVisited[v_idx++]=map[y][x];
d++;
for(int i=0;i<4;i++) {
if(y+dy[i]<0 || y+dy[i]>=R || x+dx[i]<0 || x+dx[i]>=C) continue;
if(map[y+dy[i]][x+dx[i]]!='#') {
getMaxDist(x+dx[i],y+dy[i],d,isVisited,v_idx);
}
}
result=Math.max(result, d);
}
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
R = sc.nextInt();
C = sc.nextInt();
map = new char [R][C];
char [] isVisited = new char [R*C];
char v_idx = 0;
result = 0;
for(int r=0;r<R;r++) {
String str = sc.next();
map[r] = str.toCharArray();
}
getMaxDist(0,0,0,isVisited, v_idx);
System.out.println(result);
sc.close();
}
}