https://www.acmicpc.net/problem/3085
"""
"""
from sys import stdin
input = stdin.readline
n = int(input())
pan = [ list(input().rstrip()) for _ in range(n) ]
answer = 0 # 상근이가 먹을 수 있는 사탕의 최대 개수
def check():
global answer
for i in range(n): # 가로줄에서 먹을 수 있는 사탕의 최대 개수 구하기
cnt = 1
for j in range(n-1):
if pan[i][j] == pan[i][j+1]: # 인접한 곳이 같은 색인 경우 사탕의 개수를 +1하고 최대값을 구한다.
cnt += 1
answer = max(answer, cnt)
else:
cnt = 1
for i in range(n): # 세로줄에서 먹을 수 있는 사탕의 최대 개수 구하기
cnt = 1
for j in range(n-1):
if pan[j][i] == pan[j+1][i]:
cnt += 1
answer = max(answer, cnt)
else:
cnt = 1
for i in range(n): # 가로줄에서 사탕의 색이 다른 경우
for j in range(n-1):
if pan[i][j] != pan[i][j+1]:
pan[i][j], pan[i][j+1] = pan[i][j+1], pan[i][j] # 자리 바꿈
check() # 먹을 수 있는 사탕의 최대 개수 구하기
pan[i][j], pan[i][j + 1] = pan[i][j + 1], pan[i][j] # 자리 원위치
for i in range(n): # 세로줄에서 사탕의 색이 다른 경우
for j in range(n-1):
if pan[j][i] != pan[j+1][i]:
pan[j][i], pan[j+1][i] = pan[j+1][i], pan[j][i] # 자리 바꿈
check() # 먹을 수 있는 사탕의 최대 개수 구하기
pan[j][i], pan[j + 1][i] = pan[j + 1][i], pan[j][i] # 자리 원위치
print(answer)
사탕의 위치를 바꾸고 최대 개수를 구하기 위해 함수 호출 후 다시 원위치로 돌리는 부분만 조심하면 됨.
사탕의 최대개수를 구하는 함수에서 인접한 곳에 같은 색의 사탕이 있다면 max()를 통해 계속 최대값을 갱신해주어야 하는 부분도 중요