본문 바로가기
알고리즘/SWEA

[파이썬] [SWEA] 1216. [S/W 문제해결 기본] 3일차 - 회문2

by SBOX Learning by doing 2021. 2. 20.
반응형

swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AV14Rq5aABUCFAYi

 

SW Expert Academy

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

swexpertacademy.com

1. normal

T = 10
def call_me(M, N):
        # 가로에서 확인되면 세로는 안하게
        count = 0
        # 가로 확인
        for j in range(N):
            for k in range(N-M+1):
                cnt = 0
                for t in range(M):
                    if tx_list[j][t+k] == tx_list[j][M+k-t-1]:
                        cnt += 1

                if cnt == M:
                    result = M
                    count += 1
                    return result
        if count == 0:
            # 세로 확인
            for j in range(N):
                for k in range(N-M+1):
                    cnt = 0
                    for t in range(M):
                        if tx_list[t+k][j] == tx_list[M+k-t-1][j]:
                            cnt += 1

                    if cnt == M:
                        for i in range(M):
                            result = M
                            return result

for tc in range(1, T+1):
    # 정답 리스트
    goal_list = []
    _ = input()
    # array 형식 변환
    tx_list = []
    N = 100
    for i in range(N):
        N_str_list = list(map(str, input().split()))
        tx_list += N_str_list

    for M in range(100):
        try:
            if call_me(M, N)>=0:
                result = call_me(M, N)
        except:
            continue
    print("#{} {}".format(tc, result), end=" ")
    print()
반응형

댓글