Strong Root


난이도 ★


문제를 보시려면 여기를 클릭




틀리기 쉬운 입출력 예제

입력

출력 

"abcdba"

"a"

1

1




힌트

 무려 n 세제곱의 풀서치를 하는 수밖에 없다. 대신 가지치기를 잘해야한다.

 1. 최대 길이를 구하는 것이므로 최대부터 서치할 것.

 2. 길이 1은 서치하지 말것.



이하는 코드입니다.


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
32
public int solution(String s) {
    for (int answer = s.length(); answer > 1; answer--) {
        int start = 0;
        int end = 0 + answer - 1;
        
        while (end < s.length()) {
            if (isPalindrome(s, start, end)) {
                return answer;
            }
            
            start++;
            end++;
        }
    }
    
    return 1;
}
 
private boolean isPalindrome(String s, int start, int end) {
    int diffBy2 = (end - start + 1/ 2 - 1;
    
    for (int i = 0; i <= diffBy2; i++) {
        char c1 = s.charAt(start + i);
        char c2 = s.charAt(end - i);
        
        if (c1 != c2) {
            return false;
        }
    }
    
    return true;
}
cs