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

shin·2022년 11월 17일
0

CodingTest 문제 풀이

목록 보기
47/79

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

풀이

def fun(N, num):
    result = 0
    for n in num:
        index = 0
        front = 0
        count = 0
        end = front + N - 1
        while True:
            if n[front] == n[end]:
                count += 1
                if count == N // 2:
                    result += 1
                    if index + 1 > 8 - N:
                        break
                    else:
                        index += 1
                        count = 0
                        front = index
                        end = front + N - 1
                else:
                    front += 1
                    end -= 1
            else:
                if index + 1 > 8 - N:
                        break
                else:
                    index += 1
                    count = 0
                    front = index
                    end = front + N - 1
    return result

for t in range(1, 11):
    N = int(input())
    result = 0
    num = [input() for _ in range(8)]
    
    result += fun(N, num)
    num = list(map(list, zip(*num)))
    
    result += fun(N, num)
    print(f"#{t} {result}")
  • 주어진 회문의 길이보다 크거나 같은 개수의 알파벳이 남아있을 때까지 옆으로 이동하면서 앞 뒤 문자를 확인해서 회문인지 확인함
  • front와 end 변수를 사용해서 front를 1씩 증가, end를 1씩 감소
  • 가로 비교 후 배열을 전치 시켜서 가로로 이동하면서 비교하는 코드를 그대로 활용
profile
Backend development

0개의 댓글