SWEA

[SWEA] 1215 [S/W 문제해결 기본] 3일차 - 회문1 -python

peach_h 2023. 2. 13. 21:33

SW Expert Academy

 

SW Expert Academy

SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요!

swexpertacademy.com

 

1. 팰린드롬(회문)인지 판별하는 함수를 생성한다

2. 가로 리스트에서 나올 수 있는 모든 경우에 팰린 함수를 돌린다

3. 결과가 True고, 길이가 N이면 cnt 증가

나는야 팰린드롬 마스터

 

# 팰린드롬 판별 함수
def palin(str):
    for i in range(len(str)//2):
        if str[i] != str[len(str)-1-i]:
            return False
            break
    else:
        return True

T = 10
# 여러개의 테스트 케이스가 주어지므로, 각각을 처리합니다.
for test_case in range(1, T + 1):
    N = int(input())
    arr = [list(input())for _ in range(8)]
    arr_t = [[0]*8 for _ in range(8)]
    ans = [0]
    # 전치행렬 만들기
    for i in range(8):
        for j in range(8):
            arr_t[i][j] = arr[j][i]
    cnt = 0
    for k in range(8):
        for i in range(8):
            for j in range(8, i-1, -1):
                # arr[k][i:j]가 팰린드롬이고, 길이가 N 이면 cnt 증가
                if palin(arr[k][i:j]) == True and len(arr[k][i:j]) == N:
                    cnt += 1
                # 세로 버전
                if palin(arr_t[k][i:j]) == True and len(arr_t[k][i:j]) == N:
                    cnt += 1
    print(f'#{test_case} {cnt}')