[SWEA] 1216. [S/W 문제해결 기본] 3일차 - 회문2 - Python
SWEA '1216. [S/W 문제해결 기본] 3일차' 문제 풀이를 정리했습니다.
2024-09-23조회수 -
PythonAlgorithm
풀이
배열에서 슬라이딩윈도우처럼 시작점을 이동하며 특정 길이 j인 문자열이 회문인지 확인하고, 회문을 찾으면 그 길이를 리스트에 담는다. 배열을 전치 후에 다시 반복하여 회문을 찾아 그 길이를 리스트에 담는다. 이후 리스트의 최댓값, 즉 회문 길이의 최댓값을 찾는다.
코드
# 1216
# [S/W 문제해결 기본] 3일차 - 회문2
for test_case in range(1,11):
n = int(input())
s = [input() for _ in range(100)]
temp = []
for i in range(100):
flag = 0
for j in range(100,-1,-1):
for k in range(100-j+1):
if s[i][k:k+j] == s[i][k:k+j][::-1]:
temp.append(j)
flag = 1
break
if flag == 1:
break
s = list(zip(*s))
for i in range(100):
flag = 0
for j in range(100,-1,-1):
for k in range(100-j+1):
if "".join(s[i][k:k+j]) == "".join(s[i][k:k+j])[::-1]:
temp.append(j)
flag = 1
break
if flag == 1:
break
result = max(temp)
print(f"#{n} {result}")