일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- DFS
- 파이썬 #백준 #알고리즘 #코딩테스트
- PYTHON
- 백트랙킹
- 프로그래머스 #파이썬 #코딩테스트 #알고리즘
- css #생활코딩 #웹
- dp
- 다이나믹프로그래밍
- 알고리즘
- 자바 #java
- 투포인터
- 코딩테스트
- react #리액트 #동빈나 #나동빈 #유튜브강의
- 백준 #파이썬 #알고리즘 #코딩테스트
- css #웹 #생활코딩
- java #자바
- 프로그래머스 #파이썬 #알고리즘 #코딩테스트
- 프로그래머스
- 파이썬
- Dijkstra
- 백준 #알고리즘 #파이썬 #코딩테스트
- java #자바 #동빈나
- java #자바 #나동빈
- react #리액트 #동빈나
- java #자바 #생활코딩
- 재귀
- 백준
- 다익스트라
- 파이썬 #알고리즘 #코딩테스트 #프로그래머스
- BFS
Archives
- Today
- Total
커리까지
[프로그래머스] 가장 긴 팰린드롬 파이썬 본문
728x90
SMALL
문제 설명
앞뒤를 뒤집어도 똑같은 문자열을 팰린드롬(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합니다.
제출 답안
- 먼저
s
를 뒤집은s_re
를 만든다. - 그런 후
start
와end
를 변경해가며 값이 같으면answer
를 갱신한다.- 여기서 미리
s_re
를 만들어 놓지 않고s[start:end]
를[::-1]
로 비교하면 효율성은 통과하지만 시간이 오래 걸린다. - 미리 만들어서 범위를 변경하면 3배 빠르다.
- 여기서 미리
def solution(s):
answer = 1
s_re = s[::-1]
n = len(s)
for start in range(n):
for end in range(n, start-1, -1):
if s[start:end] == s_re[n-end:n-start]:
answer = max(answer, end-start)
return answer
728x90
LIST
'알고리즘 > 풀이' 카테고리의 다른 글
[프로그래머스] 다단계 칫솔 판매 파이썬 (0) | 2023.06.28 |
---|---|
[프로그래머스] 셔틀 버스 파이썬 (0) | 2023.06.27 |
[프로그래머스] 합승 택시 요금 파이썬 (0) | 2023.06.24 |
[프로그래머스] 경주로 건설 파이썬 (0) | 2023.06.22 |
[프로그래머스] 요격 시스템 파이썬 (0) | 2023.06.21 |
Comments