SWEA

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

zhelddustmq 2024. 7. 16. 16:43

문제: 무단 배포 금지로 인해 사이트 주소로 남깁니다.

https://swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AV14QpAaAAwCFAYi

 

SW Expert Academy

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

swexpertacademy.com

 

 

 

정답 코드:

arr_length = 8 #배열 가로 세로 길이
for test_case in range(1, 11):
    answer = 0
    word_length = int(input()) # 단어 길이
    arr = [list(input()) for i in range(arr_length)]

    #가로 조사
    for i in range(arr_length):
        # 단어 찾는 것이 배열에서 벗어나지 않게끔
        for j in range(arr_length - word_length + 1):
            flag = True # 회문인지 확인하는 변수
            temp = arr[i][j:j+word_length] # 회문 검사할 단어
            #회문 검사 for문, 비교할때, 한번이라도 같지 않다면 flag 변수 False하고 for문 나옴
            for k in range(word_length // 2):
                if temp[k] != temp[-(k+1)]:
                    flag = False
                    break
            #flag가 True이면 회문이었음으로 answer += 1
            if flag:
                answer += 1

    #세로 조사
    for i in range(arr_length - word_length + 1):
        for j in range(arr_length):
            temp = []
            flag = True
            # 세로로 temp에 단어를 저장하게끔 하는 방법
            for k in range(i,i + word_length):
                temp.append(arr[k][j])
            for k in range(word_length // 2):
                if temp[k] != temp[-(k+1)]:
                    flag = False
                    break
            if flag:
                answer += 1
    print(f"#{test_case} {answer}")