자리를 단 한번만 바꿀 수 있기 때문에 행, 열 각각 체크를 하면서 아래와 바꿨을 때 오른쪽과 바꿨을 때의 max값을 확인하면 된다.
4방향이 아닌 이유는 왼쪽과 위는 이미 보고 왔기 때문에 볼 필요가 없다.
오른쪽과 바꿨을 때 그 자리에 행과 열 max값을 찾는다. 아래와 바꿨을 때 그 자리에 행과 열 max값을 찾는다.
바꾸고 난 후에는 다시 돌려놓아야한다. (1번만 바꿀 수 있기 때문)
def check():
global result
for i in range(N):
cnt = 1
for j in range(N-1):
if board[i][j] == board[i][j+1]:
cnt += 1
result = max(result, cnt)
else: cnt = 1
for i in range(N):
cnt = 1
for j in range(N-1):
if board[j][i] == board[j+1][i]:
cnt += 1
result = max(result, cnt)
else: cnt = 1
result = 1
N = int(input())
board = [list(input()) for _ in range(N)]
for i in range(N):
for j in range(N-1):
board[i][j], board[i][j+1] = board[i][j+1], board[i][j] #행
check()
board[i][j+1], board[i][j] = board[i][j], board[i][j+1]
board[j][i], board[j+1][i] = board[j+1][i], board[j][i] #열
check()
board[j+1][i], board[j][i] = board[j][i], board[j+1][i]
print(result)