[level 3] Title: 가장 긴 팰린드롬 파이썬

2022. 5. 30. 18:31·개인공부/알고리즘

 

나는 이게 팰린드롬인지 확인하는 함수를 만들고, 이를 전체 확인하여, 갯수를 확인해보려고 하였다.

# 초기 코드

def check(text):
    temp = []
    mid = len(text) // 2
    if len(text) % 2 == 0:
        for i in range(len(text)):
            if i < mid:
                temp.append(text[i])
            elif i >= mid:
                if temp[-1] == text[i]:
                    temp.pop()
        return True if not temp else False
    else:
        for i in range(len(text)):
            if i < mid:
                temp.append(text[i])
            elif i > mid:
                if temp[-1] == text[i]:
                    temp.pop()
        
        return True if not temp else False        
        
def solution(s):
    answer = 0
    max = 0
    
    for i in range(len(s)):
        for j in range(i+1, len(s)+1):
            temp_s = s[i:j]
            if check(temp_s):
                if max < len(temp_s):
                    max = len(temp_s)
    return max

 

 

하지만 문제는 효율성 테스트를 통과하지 못했다. 그래서 나는 시간 복잡도가 들어 갈 만한것들은 모두 줄여 보았다.

가장먼저 첫 check 함수를 바꿔보았다.

 

 

def check(text):
    return True if text == text[::-1] else False

 

 

loop를 돌면서 하나씩 확인하는 것이 아니라,  문자열 뒤집어서 같은지 확인해보았다.(문자열 뒤집는 방법을 알았는데, 왜 안썻는지.. 하하..)

 

해당문제에서 max 함수를 쓰는것과 갱신하는 것은 큰 차이가 없었지만, max 함수를 쓰지 않고 바로바로 max 값을 갱신하였다. 

# 최종 코드
def check(text):
    return True if text == text[::-1] else False       
        
def solution(s):
    max = 0
    for i in range(len(s)):
        for j in range(i+1, len(s)+1):
            temp_s = s[i:j]
            if check(temp_s):
                if max < len(temp_s):
                    max = len(temp_s)
    return max

 

 

 

 

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

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

programmers.co.kr

 

728x90
저작자표시 (새창열림)

'개인공부 > 알고리즘' 카테고리의 다른 글

[level 3] Title: 멀리 뛰기 파이썬  (0) 2022.05.31
[level 3] Title: 숫자 게임 파이썬  (0) 2022.05.30
[level 3] Title: 단어 변환 파이썬  (0) 2022.05.30
[level 3] Title: 가장 먼 노드 파이썬  (0) 2022.05.29
[level 3] Title: 순위 파이썬  (0) 2022.05.27
'개인공부/알고리즘' 카테고리의 다른 글
  • [level 3] Title: 멀리 뛰기 파이썬
  • [level 3] Title: 숫자 게임 파이썬
  • [level 3] Title: 단어 변환 파이썬
  • [level 3] Title: 가장 먼 노드 파이썬
KEEMSY
KEEMSY
JUST DO IT
KEEMSY
목적, 수단, 목표
KEEMSY
전체
오늘
어제
  • 분류 전체보기
    • 회고
      • WIL
      • TIL
    • Project
    • 개인공부
      • 알고리즘
      • 아키텍처
      • 트러블슈팅
      • 테스팅
      • git
      • 배포

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

hELLO· Designed By정상우.v4.5.2
KEEMSY
[level 3] Title: 가장 긴 팰린드롬 파이썬

개인정보

  • 티스토리 홈
  • 포럼
  • 로그인
상단으로

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.