Algorithm/SW Expert Academy

[Python] 1216. 회문2

느낌표 공장장 2021. 9. 7. 23:54
def is_palindrome(i, j, k, board):
    len_board_h = len(board)//2

    if len(board) % 2:
        start = board[:len_board_h]  # 구간의 처음 ~ 중간까지의 범위
        end = board[:len_board_h:-1]  # 중간 ~ 구간의 끝 까지의 범위 (비교할 수 있도록 반대로 슬라이싱하였다.)
                                        # [구간의 끝 : 중간 : -1]
    # 회문의 길이가 홀수일 떄
    else:
        start = board[:len_board_h]  # 구간의 처음 ~ 중간 글자 이전
        end = board[:len_board_h-1:-1]  # 중간글자 다음부터 ~ 구간의 끝

    # 비교한 두 범위가 같다면 정답을 반환한다.
    if start == end:
        return board

    return []


for idx in range(1, 11):
    n = int(input())
    board = [list(input()) for _ in range(100)]
    board_r = list(map(list, zip(*board)))

    answer = 1
    for i in range(100):
        for j in range(98):
            k = j+answer+1  # 찾은 최대 길이만큼 뛰어넘기
            while k <= 100:

                # 가로
                garo = is_palindrome(i, j, k, board[i][j:k])
                if len(garo) > answer:
                    answer = len(garo)

                # 세로
                sero = is_palindrome(i, j, k, board_r[i][j:k])
                if len(sero) > answer:
                    answer = len(sero)

                k += 1

    print('#{} {}'.format(idx, answer))

 

 

'Algorithm > SW Expert Academy' 카테고리의 다른 글

[Python] 4865. 글자수  (0) 2021.09.07
[Python] 4864. 문자열비교  (0) 2021.09.07
[Python] 4861. 회문  (0) 2021.09.07
[Python] 1221. GNS  (0) 2021.09.07
[Python] 1213. string  (0) 2021.09.07