프로그래머스(Programmers)
프로그래머스 Level 3 > 가장 긴 펠린드롬
cepiloth
2018. 7. 3. 20:40
반응형
https://programmers.co.kr/learn/courses/30/lessons/12904
1. 문제
앞뒤를 뒤집어도 똑같은 문자열을 팰린드롬(palindrome)이라고 합니다.
문자열 s가 주어질 때, s의 부분문자열(Substring)중 가장 긴 팰린드롬의 길이를 return 하는 solution 함수를 완성해 주세요.
예를들면, 문자열 s가 abcdcba이면 7을 return하고 abacde이면 3을 return합니다.
제한사항
문자열 s의 길이 : 2500 이하의 자연수
문자열 s는 알파벳 소문자로만 구성
2. 알고리즘
키워드 - 문자열, 성준대리님은 풀었어요
3. 코드
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 | #include <iostream> #include <string> #include <algorithm> using namespace std; int solution(string s) { int answer = 0; int length = s.length(); for(int i=0;i<length;i++) { for(int subLength = length; subLength >answer; subLength--) { int left = i; int right = left+subLength - 1; while(left<right && s[left] == s[right]) { left++; right--; } if(left >= right && answer < subLength) { answer = subLength; break; } } } return answer; } | cs |
반응형