[SW Expert Academy] D3 1216번 [S/W 문제해결 기본] 3일차 - 회문2(python)

good_da22·2022년 5월 20일
0

SW Expert Academy

목록 보기
17/20
post-thumbnail

SW Expert Academy

D3 1216번 [S/W 문제해결 기본] 3일차 - 회문2(python)

문제

풀이과정

100 * 100 테이블에서 회문을 찾고 가장 길이가 긴 회문의 길이를 출력
가로(행)에서 회문 탐색
하나의 행에서 회문의 길이가 최대 100부터 1씩 감소하며 이어지는 문자열 검색
뒤에서 부터 탐색하기 때문에 기존의 회문이 발견되면 기존의 최대 길이와 비교후 다음 행으로

세로(열)에서 회문 탐색
하나의 열에서 회문의 길이 1부터 최대 100 까지 1씩 증가하며 이어지는 문자열 검색
회문이 발견되면 기존의 최대 길이와 비교
길이가 1인 경우부터 비교하기 때문에 하나의 행에서 최대 길이가 될때 까지 회문의 여부를 확인해야한다.

소스코드

for t in range(10):
    test_number = int(input())

    board = []

    for _ in range(100):
        board.append(input())

    row_max = 0
    for i in range(100):
        for j in range(100):
            for k in range(100-j):
                row_string = board[i][j:101-k]
                if row_string == row_string[::-1]:
                    row_max = max(row_max, len(row_string))
                    break

    col_max = 0
    for i in range(100):
        for j in range(100):
            col_string = ''
            for k in range(100-j):
                col_string += board[j+k][i]
                if col_string == col_string[::-1]:
                    col_max = max(col_max, len(col_string))

    result = max(row_max, col_max)

    print("#{} {}".format(test_number, result))
profile
dev blog

0개의 댓글