SWEA 1216. 회문2(python)
SWEA 문제 1216. 회문2
문제의 저작권은 SW Expert Academy에 있습니다.
문제링크
문제설명
입출력 예
솔루션
주어지는 배열이 100x100으로 일정하므로 길이 100짜리부터 역으로 탐색한다.
값을 찾는다면 가장 긴 회문의 길이가 되므로 값을 출력한다.
코드
# import sys
# sys.stdin=open("input3.txt")
#회문 검사 함수
def check(lst):
for i in range(len(lst)//2):
if lst[i]!=lst[-i-1]:
return False
return True
#각 행에 대해서 검사할 것이기 때문에 가로기준 arr과 세로기준 arr2를 생성
for tc in range(1,11):
T = int(input())
arr = [list(input()) for _ in range(100)]
#arr2는 arr의 전치행렬이다.
arr2 = list(zip(*arr))
max_v = 1 #길이가 1인 문자열 자체가 회문이므로 1로 초기화
#최대길이부터 거꾸로 검사한다
#해당 길이에서 최대값을 저장하게 되면 같은 길이나 그보다 작은 길이에서는
#검사할 필요가 없으므로 break선언
for length in range(100,1,-1):
if max_v >= length:
break
for idx in range(100-length+1):
if max_v == length:
break
for lst, lst2 in zip(arr, arr2):
if check(lst[idx:idx+length]) or check(lst2[idx:idx+length]):
max_v = length
break
print('#{} {}'.format(tc,max_v))
Author And Source
이 문제에 관하여(SWEA 1216. 회문2(python)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@jinho0705/SWEA-1216.-회문2python저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)