2. Palindrome
Algorithm - Level 3
- 풀이
1. palindrome은 문자열을 뒤집어도 같은 문자열을 의미한다.
2. 문자열의 어떤 문자를 잡았을 때, 그 문자와 대칭하는 문자를 우선 찾는다.
3. 대칭 되는 문자들을 기준으로 그 사이에 존재하는 문자들을 비교한다.
-> 이 때, 하나라도 매칭되지 않는다면 기준 문자들은 올바르지 않은 매칭이다.
4. 효율성 : for문을 사용하되 기존의 매칭된 문자열의 길이보다 남은 문자열이 작다면 더 찾아봐도 그 길이 이상이 나올 수 없다.
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 | #include <iostream> #include <string> using namespace std; int solution(string s){ int answer = 0; if(s.length()==1) return 1; for(int i=0; i<s.length()-1; i++){ for(int j=s.length()-1; j>=i; j--){ if(j-i < answer) break; int tmp=0; if(s[i]==s[j]){ for(int a=i; a<=j; a++){ if(s[a]!=s[j+i-a]){ tmp = 0; break; } else tmp+=1; } } answer = tmp>answer ? tmp : answer; } } return answer; } | cs |
'Study > Algorithm' 카테고리의 다른 글
[Level 3] 4. 멀리 뛰기 (0) | 2018.08.09 |
---|---|
[Level 3] 3. 거스름돈 경우의 수 (0) | 2018.08.07 |
[Level 3] 1. 2xN 타일링 (0) | 2018.08.02 |
[Level 2] 12. N개의 최소공배수 (0) | 2018.08.01 |
[Level 2] 11. JadenCase (0) | 2018.07.30 |