문제
SW Expert Academy
SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요!
swexpertacademy.com
문제 풀이
- 회문의 길이를 제일 큰 값(100)부터 1까지 돌리면서 회문인지 체크하고, 회문이라면 바로 출력하고 종료한다.
- 회문인지 검사하기 위해 가로 세로 값을 바꾼 새로운 리스트 선언하여 가로 회문 찾는 함수에 넣어 가로, 세로 순으로 된 두 배열 중 하나라도 회문이라면 회문길이 i를 형식에 맞게 출력한다.
- 출력 한 후, 종료 해야하므로 꼭 break한다,
코드
# 제일 긴 가로 회문 구하기
def get_longest_palindrome(word_len,array):
for i in range(n_len):
for j in range(n_len - word_len + 1):
# 양 끝의 문자가 동일하다면
if array[i][j] == array[i][j+word_len-1]:
# 안쪽도 동일한지 검사
for k in range(1,word_len//2):
if array[i][j+k] != array[i][j+word_len-1-k]:
break
else:
return True
return False
# 제일 긴 회문 길이 구하기
for tc in range(10):
n = int(input())
n_len = 100
s = [list(input()) for _ in range(n_len)]
# 세로 기준으로 리스트 저장
height_s = [''.join(x) for x in zip(*s)]
for i in range(n_len, -1, -1):
if get_longest_palindrome(i,s) or get_longest_palindrome(i,height_s):
print(f'#{tc + 1}',i)
break'Algorithm > Simulation' 카테고리의 다른 글
| [Python] SWEA 13428번 숫자 조작 (0) | 2023.05.18 |
|---|---|
| [Python] SWEA 1228,1230번 암호문1, 암호문3 (0) | 2023.05.16 |
| [Python] SWEA 1215번 회문1 (0) | 2023.05.11 |
| [Python] SWEA 2805번 농작물 수확하기 (0) | 2023.05.11 |
| [Python] SWEA 1873번 상호의 배틀필드 (0) | 2023.05.10 |