# 가로
def row():
    global cnt

    for i in range(8):

        # 범위 제한(list err 예방)
        for j in range(9 - n):
            for k in range(n // 2):
                if k != n // 2 - 1:
                    if board[i][j + k] != board[i][j + n - 1 - k]:
                        break

                else:
                    if board[i][j + k] == board[i][j + n - 1 - k]:
                        cnt += 1

    return


# 세로
def col():
    global cnt

    for i in range(8):
        
        # 범위 제한
        for j in range(9 - n):
            for k in range(n // 2):
                if k != n // 2 - 1:
                    if board[j + k][i] != board[j + n - 1 - k][i]:
                        break

                else:
                    if board[j + k][i] == board[j + n - 1 - k][i]:
                        cnt += 1

    return


for tc in range(1,11):

    n = int(input())

    board = [list(str(input())) for _ in range(8)]

    cnt = 0

    # 1인 경우에는 n//2가 0이 되기 때문에 따로 지정
    if n == 1:
        print('#{} {}'.format(tc,128))

    else:
        row()
        col()

    print('#{} {}'.format(tc,cnt))

 

그 외

느낀점

 

1. 파이썬에 할당된 시간이 30초이고, 회문의 크기가 8X8, tc는 10개이기 때문에 어떤 방법을 사용해도 시간이 넉넉하지 않을까?

 

 

ps. 개인적인 코드와 코드를 작성의 이유를 적은 것입니다.

 

오류나 적절치 않은 문법이 존재할 수 있으며, 다른 분들께는 굉장히 비효율적인 방법으로 여겨질 수 있습니다.

 

혹시 개선 사항, 오류 및 문제에 대한 수정 사항 등을 댓글로 남겨주신다면 감사한 마음으로 배우고 수정하겠습니다