본문 바로가기

Study/Algorithm

[Level 3] 2. Palindrome

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()==1return 1;
 
    for(int i=0; i<s.length()-1; i++){
        for(int j=s.length()-1; j>=i; j--){
            if(j-< 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