Skip to content

Latest commit

 

History

History
72 lines (57 loc) · 2.3 KB

swea_palindrome2.md

File metadata and controls

72 lines (57 loc) · 2.3 KB

swea palindrome2 1216

image


  • input
1
CCBBCBAABCCCBABCBCAAAACABBACCCCACAABCBBACACAACABCBCCB...
ACBAAAACCACCCBAACAAABACACCABCBCBABBBACBABCAACCBCCACBC...
CCCACCBCBACBACBCABAABABCCAAAACCCCCBBAABBCCBCCCABBACAC...
CABACBCBBCBABACABBBBBBABBCABCBCBCAABCBCCCBABACCCCABBA...
BCCBCCACCBCBCABBBCCABAACACCBCCCBCCACCBBCBCCCBBCCBACBC...
BBBBCBBAACABACCBCBCCABBBBCCAABCBBCACCBBCAAAABABABBABB...
ABBAACCCACBBABBABCCCABABCACABABACCCBACACABCBCCCBABCCC...
ABBBBAABCAACCBACBBAACACABCABACBAABCAABBCCCCCCACBCCCCA...
ACCACABABBACBBAACCBBACBBCCACCACCABCCBABABBBACBACBAABC...
BABACACCABCAACBAABCCACCACBCCAABBCBAABABAACAAAAAACCCBC..
...


  • solve
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}')