반응형
https://programmers.co.kr/learn/courses/30/lessons/12904
문제 설명
앞뒤를 뒤집어도 똑같은 문자열을 팰린드롬(palindrome)이라고 합니다.
문자열 s가 주어질 때, s의 부분문자열(Substring)중 가장 긴 팰린드롬의 길이를 return 하는 solution 함수를 완성해 주세요.
예를들면, 문자열 s가 abcdcba이면 7을 return하고 abacde이면 3을 return합니다.
제한사항
- 문자열 s의 길이 : 2,500 이하의 자연수
- 문자열 s는 알파벳 소문자로만 구성
입출력 예
s | answer |
abcdcba | 7 |
abacde | 3 |
입출력 예 설명
입출력 예 #1
4번째자리 'd'를 기준으로 문자열 s 전체가 팰린드롬이 되므로 7을 return합니다.
입출력 예 #2
2번째자리 'b'를 기준으로 aba가 팰린드롬이 되므로 3을 return합니다.
풀이 설명
1. 문자열 s의 문자 하나하나를 탐색(i)
2. i + 1부터 문자 끝까지 탐색(j)
2-1. s[i:j]가 빈 문자열이 아니고, 뒤집었을 때 똑같으면 answer에 그 길이를 추가한다.
3. answer의 최댓값 리턴
Python3 코드
def solution(s):
answer = []
for i in range(len(s)):
for j in range(i+1, len(s) + 1):
if s[i:j] and str(s[i:j]) == str(s[i:j])[::-1]:
answer.append(len(s[i:j]))
return max(answer)
반응형
'Algorithm' 카테고리의 다른 글
[프로그래머스] 가장 큰 정사각형(Python, Java) (0) | 2021.01.11 |
---|---|
[프로그래머스] 기둥과 보 설치(Python) (0) | 2021.01.11 |
[프로그래머스] 베스트앨범(Python) (0) | 2021.01.09 |
[프로그래머스] 등굣길(Python) (0) | 2021.01.09 |
[프로그래머스] 이중우선순위큐(Python, Java) (0) | 2021.01.08 |