회문 문제와 풀이 과정이 비슷하다. 다만 palindrome의 길이가 정해져있지 않고, 길이의 최댓값을 구하는 것이 목적이다.
- palindrome을 100부터 max_palindrome까지 줄여나가며 탐색한다.
- max_palindrome 보다 작은 palindrome은 탐색하지 않고 스킵한다.
MAX_SIZE = 100
def is_palindrome(str):
if str == str[::-1]:
return len(str)
return False
T = 10
for _ in range(1, T+1):
tc = int(input())
arr = [list(input()) for _ in range(MAX_SIZE)]
max_palindrome = 0
for i in range(MAX_SIZE):
for palindrome_len in range(MAX_SIZE, max_palindrome, -1):
if palindrome_len < max_palindrome:
break
for startIndex in range(0, MAX_SIZE - palindrome_len + 1):
tmp = ''
for j in range(palindrome_len):
tmp += arr[i][startIndex + j]
newPalindrome = is_palindrome(tmp)
if newPalindrome:
max_palindrome = newPalindrome
break
for palindrome_len in range(MAX_SIZE, max_palindrome, -1):
if palindrome_len < max_palindrome:
break
for startIndex in range(0, MAX_SIZE - palindrome_len + 1):
tmp =''
for j in range(palindrome_len):
tmp += arr[startIndex + j][i]
newPalindrome = is_palindrome(tmp)
if newPalindrome:
max_palindrome = newPalindrome
print(f'#{tc} {max_palindrome}')