알고리즘 문제 풀기/SWEA

SWEA 1216. 회문 2 - 파이썬

hibscus 2021. 3. 6. 19:50

SWEA 1216. 회문 2 

 

 

 

 

 

 

 

def find_palindrome(N, arr):
    ans = ''
    for n in range(100):  # 돌아가는 갯수 늘리기
        for s in range(n+1):  # 탐색 위치 바꾸기
            for r in range(N): # 한줄씩 바꾸기
                flag = True
                M = N - n
                #가로
                for idx1 in range(M // 2): # 앞뒤 비교하는것
                     start = s + idx1
                    end = s + M - 1 - idx1
                    if arr[r][start] != arr[r][end]:
                        flag = False
                        break
                if flag:
                    return len(arr[r][s:s + M])
                #세로
                flag = True
                for idx2 in range(M // 2):  # 앞뒤 비교하는것
                    start = s + idx2
                    end = s + M - 1 - idx2
                    if arr[start][r] != arr[end][r]:
                        flag = False
                        break
                if flag:
                    for i in range(M):
                        ans += arr[s+i][r]
                    return len(ans)


for _ in range(10):
    tc = int(input())
    arr = []
    N = 100
    for i in range(N):
        arr.append(list(input()))
    print('#{} {}'.format(tc, find_palindrome(N, arr)))