풀기 전에...
https://gkim1011.tistory.com/15
회문을 풀면 회문 2는 상대적으로 더 쉽게 풀수있다.
위 링크의 회문 문제는 회문이 있는 단어의 길이가 정해져있었던 반면,
이 문제에서는 회문의 최대 길이를 구해야하기 때문에
3중 for문을 써서 회문의 길이를 증가시켰다.
이때 회문의 길이는 100에서 첫 글자의 x좌표를 뺀 것이어야 한다.
(인덱스에러에 주의)
계속 for문을 돌면서, 회문 길이를 cnt에 저장하고,
그 cnt가 MAX보다 크면 MAX를 새롭게 바꿔주었다.
그럼 전체 배열을 돌면 MAX는 최대 회문의 길이가 된다.
T = 10
for tc in range(1, T+1):
n = int(input())
arr = [list(input()) for _ in range(100)]
MAX = 0
cnt = 0
#가로로 가장 큰 회문 찾기
for i in range(100):
for j in range(100):
for k in range(100-j+1):
if arr[i][j:j+k] == arr[i][j:j+k][::-1]:
cnt= k
if cnt>MAX:
MAX=cnt
#세로로 가장 큰 회문 찾기
#먼저 가로세로 바꾼 arr 새로 만들기
temp_out = []
for s in range(100):
temp_in = []
for t in range(100):
temp_in.append(arr[t][s])
temp_out.append(temp_in)
# print(temp_out)
for n in range(100):
for m in range(100):
for l in range(100-m+1):
if temp_out[n][m:m+l] == temp_out[n][m:m+l][::-1]:
cnt=l
if cnt > MAX:
MAX = cnt
print(f'#{tc} {MAX}')
'파이썬 알고리즘' 카테고리의 다른 글
재귀 DFS 문제: 단어 최소 사용 개수 구하기 (0) | 2022.09.18 |
---|---|
SWEA 1210 사다리 (1) | 2022.09.16 |
SWEA 1221 GNS (0) | 2022.09.16 |
SWEA 4861 회문 (0) | 2022.09.16 |
SWEA 2805 농작물 수확하기 (0) | 2022.09.12 |