1
CCBBCBAABCCCBABCBCAAAACABBACCCCACAABCBBACACAACABCBCCB...
ACBAAAACCACCCBAACAAABACACCABCBCBABBBACBABCAACCBCCACBC...
CCCACCBCBACBACBCABAABABCCAAAACCCCCBBAABBCCBCCCABBACAC...
CABACBCBBCBABACABBBBBBABBCABCBCBCAABCBCCCBABACCCCABBA...
BCCBCCACCBCBCABBBCCABAACACCBCCCBCCACCBBCBCCCBBCCBACBC...
BBBBCBBAACABACCBCBCCABBBBCCAABCBBCACCBBCAAAABABABBABB...
ABBAACCCACBBABBABCCCABABCACABABACCCBACACABCBCCCBABCCC...
ABBBBAABCAACCBACBBAACACABCABACBAABCAABBCCCCCCACBCCCCA...
ACCACABABBACBBAACCBBACBBCCACCACCABCCBABABBBACBACBAABC...
BABACACCABCAACBAABCCACCACBCCAABBCBAABABAACAAAAAACCCBC..
...
import sys
sys.stdin = open('input.txt', 'r')
def is_palindrome(word):
return word == word[::-1]
# word는 100글자짜리 단어
# max_size 여태까지 찾았던 최대값
def solve(word, max_size, size):
# 현재 100자 중 word_len 글자짜리 회문이 있는지 검사
for word_len in range(100, 0, -1):
# 만약 word_len이 내가 아는 최대보다 작거나 같으면 (탈출조건)
if word_len == max_size:
break
for idx in range(size - word_len + 1):
if is_palindrome(word[idx:idx + word_len]):
if word_len > max_size:
return word_len
return max_size
for test_case in range(1, 11):
input()
size = 100
words = [input() for _ in range(size)]
words_ver = []
for i in range(size):
tmp = ''
for j in range(size):
tmp += words[j][i]
words_ver.append(tmp)
result = 0
for word in words:
result = solve(word, result, size)
# 현재 최대, 후보 최대 검증
for word in words_ver:
# 세로도 마찬가지로 진행
result = solve(word, result, size)
print(f'#{test_case} {result}')