[프로그래머스 스쿨][Python] 가장 긴 팰린드롬
2023. 3. 20. 23:51ㆍ알고리즘 문제풀이
반응형
문제
문제 설명
앞뒤를 뒤집어도 똑같은 문자열을 팰린드롬(palindrome)이라고 합니다.
문자열 s가 주어질 때, s의 부분문자열(Substring)중 가장 긴 팰린드롬의 길이를 return 하는 solution 함수를 완성해 주세요.
예를 들어, 문자열 s가 "abcdcba"이면 7을 return하고, "abaced"이면 3을 return합니다.
제한사항
- 문자열 s의 길이 : 2,500 이하의 자연수
- 문자열 s는 알파벳 소문자로만 구성
입출력 예시
s | answer |
"abcdcba" | 7 |
"abaced" | 3 |
문제: 프로그래머스 스쿨 - 연습문제 - 가장 긴 팰린드롬
문제 풀이
유의사항
- s의 길이가 2,500이하 이므로, O(N^2)으로 문제를 풀 수 있다.
- 팰린드롬을 검사하는 함수를 선언하여 문제를 풀면, 쉽게 풀 수 있다.
- 팰린드롬을 검사하는 알고리즘은 O(N)이다.
- 파이썬에서 특정 문자열을 뒤집는 방법에는 몇가지가 있으나, 가장 간단한 방법은 아래와 같다.
str[::-1]
풀이
- 핵심 아이디어: 주어진 문자열에 대한 모든 substring에 대해 팰린드롬인지 검사한 후, 그 중 가장 긴 substring의 길이를 출력하면 된다.
- 팰린드롬을 검사하는 방법: 문자열을 뒤집었을 때, 원래와 동일하다면 팰린드롬이다.
def isPalindrome(str: str):
if str == str[::-1]:
return True
return False
전체 코드
def isPalindrome(str: str):
if str == str[::-1]:
return True
return False
def solution(s):
answer = 1
for start in range(len(s)):
for end in range(len(s), start-1, -1):
if(isPalindrome(s[start: end])):
answer = max(answer, end - start)
return answer
print(solution("abcdcba"), "expected: 7")
print(solution("abacde"), "expected: 3")
반응형
'알고리즘 문제풀이' 카테고리의 다른 글
[프로그래머스 스쿨][Python] 최대값과 최소값 (0) | 2023.08.29 |
---|---|
[프로그래머스 스쿨][Python] 구명보트 (0) | 2023.02.28 |
[프로그래머스 스쿨][Python] 다음 큰 숫자 (0) | 2023.02.07 |
[프로그래머스 스쿨][Python] 숫자 블록 (조건 이상) (0) | 2023.02.03 |
[프로그래머스 스쿨][Python] 멀리 뛰기 (0) | 2023.02.03 |