반응형
문제: 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는 알파벳 소문자로만 구성
입출력 예
sanswer"abcdcba" | 7 |
"abacde" | 3 |
입출력 예 설명
입출력 예 #1
4번째 자리 'd'를 기준으로 문자열 s 전체가 팰린드롬이 되므로 7을 return 합니다.
입출력 예 #2
2번째 자리 'b'를 기준으로 "aba"가 팰린드롬이 되므로 3을 return 합니다.
정답
def solution(s):
answer = 1
l = len(s)
for start in range(l):
for end in range(start + 2, l + 1):
a = s[start:end]
if len(a) < answer:
continue
if a == a[::-1]:
answer = max(answer, end - start)
return answer
풀이
더보기
def solution(s):
answer = 1
l = len(s)
for start in range(l):
for end in range(start + 2, l + 1):
a = s[start:end]
if len(a) < answer:
continue
if a == a[::-1]:
answer = max(answer, end - start)
return answer
간단한 아이디어로 풀 수 있는 문제입니다.
시간초과를 조심해야하는데, end의 범위를 range(start+2, l+1)로 지정해주고, len(a) < answer 일 때 continue를 해주지 않으면 시간초과가 납니다.반응형
'알고리즘 > 프로그래머스' 카테고리의 다른 글
프로그래머스 - 가장 먼 노드 / Python (0) | 2021.08.20 |
---|---|
프로그래머스 - 하노이의 탑 / Python (0) | 2021.08.20 |
프로그래머스 - 가사 검색 / Python (0) | 2021.08.18 |
프로그래머스 - 실패율 / Python (0) | 2021.08.17 |
프로그래머스 - 괄호 변환 / Python (0) | 2021.08.13 |