

캔디크러쉬같은 느낌인듯
처음에 삽질을 너무 많이 했음
어떻게 풀어야 할지, 처음 접하니까 감이 안와서 DFS처럼 풀면 되겠거니 했다가 DFS의 조건들을 하나씩 쳐내다보니 이런 결과물이 나옴
def row_check(n, graph, visit, max_num):
    # y++하며 가로 최대값 체크
    for y in range(n):
        for x in range(1, n):
            # 같으면
            if graph[y][x-1] == graph[y][x]:
                visit[y][x] = visit[y][x-1] + 1
                max_num = max(visit[y][x], max_num)
            else:
                visit[y][x] = 1
    return max_num
def column_check(n, graph, visit, max_num):
    # x++하며 세로 최대값 체크
    for x in range(n):
        for y in range(1, n):
            # 같으면
            if graph[y-1][x] == graph[y][x]:
                visit[y][x] = visit[y-1][x] + 1
                max_num = max(visit[y][x], max_num)
            else:
                visit[y][x] = 1
    return max_num
        
n = int(input())
graph = [list(input()) for _ in range(n)]
max_num = 0           
# 스왑 한번 할 때마다 위 함수 매번 수행하면 될듯
for y in range(n):
    for x in range(1, n):
        # 다르면
        if graph[y][x-1] != graph[y][x]:
            graph[y][x-1], graph[y][x] = graph[y][x], graph[y][x-1]
            
            visit = [[0]*n for _ in range(n)]    # (주의) 이렇게 만들어줘야함
            for i in range(n):    visit[i][0] = 1
            max_num = row_check(n, graph, visit, max_num)
            
            visit = [[0]*n for _ in range(n)]    # (주의) 이렇게 만들어줘야함
            visit[0] = [1]*n
            max_num = column_check(n, graph, visit, max_num)
            
            graph[y][x-1], graph[y][x] = graph[y][x], graph[y][x-1]
for x in range(n):
    for y in range(1, n):
        # 다르면
        if graph[y-1][x] != graph[y][x]:  
            graph[y-1][x], graph[y][x] = graph[y][x], graph[y-1][x]
            
            visit = [[0]*n for _ in range(n)]    # (주의) 이렇게 만들어줘야함
            for i in range(n):    visit[i][0] = 1
            max_num = row_check(n, graph, visit, max_num)
            
            visit = [[0]*n for _ in range(n)]    # (주의) 이렇게 만들어줘야함
            visit[0] = [1]*n
            max_num = column_check(n, graph, visit, max_num)
            
            graph[y-1][x], graph[y][x] = graph[y][x], graph[y-1][x]
        
print(max_num)    

헐?

시간초과 날줄 알았는데 ㅋ
다른 블로그 솔루션도 다 나랑 똑같이 풀었음(함수는 두 가지 버전으로 하거나 하나로 합치거나!)