알고리즘/백준

[백준] 1987 - 알파벳 (파이썬)

소갱 2021. 9. 22. 14:17
import sys
sys.setrecursionlimit(10**5)

n, m = map(int,sys.stdin.readline().split())
array = []

for _ in range(n):
    array.append(list(sys.stdin.readline().rstrip()))
check = [False for _ in range(27)]
visit = [[False for _ in range(m)] for _ in range(n)]
dx = [-1,0,1,0]
dy = [0,1,0,-1]
mx = -1
def DFS(x,y,v):
    global mx
    visit[x][y] = True
    check[ord(array[x][y])-65] = True
    mx = max(mx,v)
    for i in range(4):
        nx = x + dx[i]
        ny = y + dy[i]
        if 0<=nx<n and 0<=ny<m:
            if visit[nx][ny] == False:
                if check[ord(array[nx][ny])-65] == False:
                    DFS(nx,ny,v+1)
                    check[ord(array[nx][ny])-65] = False
                    visit[nx][ny] = False
        
DFS(0,0,1)
print(mx)