티스토리 뷰

프로그래머스 '가장 긴 팰린드롬' 문제 풀이입니다.

 

문제 링크

 

코딩테스트 연습 - 가장 긴 팰린드롬

앞뒤를 뒤집어도 똑같은 문자열을 팰린드롬(palindrome)이라고 합니다. 문자열 s가 주어질 때, s의 부분문자열(Substring)중 가장 긴 팰린드롬의 길이를 return 하는 solution 함수를 완성해 주세요. 예를들

programmers.co.kr

● 문제 간단 설명

주어진 문자열 내에서 찾을 수 있는 가장 긴 팰린드롬(palindrome)을 찾는 문제이다.

- 팰린드롬(palindrome): 앞뒤로 뒤집어도 똑같은 문자열 ex) 토마토

 

● 문제 해결 방향

가장 긴 문자열을 찾는 문제이기 때문에 가장 긴 부분 문자열 (len(s))에서부터 1까지 반복하면서 팰린드롬이 나오면 return 하도록 코드를 작성하였다.

 

● 문제 해결 코드

def solution(s):
    for l in range(len(s), 0, -1):
        for i in range(len(s) - l + 1):
            target = s[i : i + l]
            
            halfIndex = l // 2
            
            left = target[0:halfIndex]
            right = target[halfIndex + 1:][::-1] if l % 2 else target[halfIndex:][::-1]
            
            if left == right:
                return l

가장 긴 문자열을 찾기 때문에 긴 문자열에 대해서 먼저 체크 해주었다.

 

펠 린드 롬을 구분하는 로직으로는

  • 가운데 글자의 index를 찾는다.
  • index 기준 앞, 뒤로 문자열을 슬라이스 한다.
  • 이때 뒤 문자열은 [::-1]로 역순 정렬하여 비교하였다.

의 순서로 동작하도록 하였다.

 

연습문제에 해당하는 파트라 그런지 Lv.3 치고는 비교적 쉬운 문제가 아니었나 하는 생각이 드는 문제였다.

 

● 참고

 

 

공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/01   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함