본문 바로가기
문제풀이/프로그래머스

[JAVA] 프로그래머스 - 가장 긴 팰린드롬

by 그적 2021. 2. 16.

(문제 설명)

 

(제한 사항)

 

어떻게 짜야할까 고민을 꽤 하다가.. 문자 각각을 중심으로 팰린드롬이 생성되는 모든 케이스를 나눠 조사해버리자 해서 만들어진 코드이다.

    public static void main(String[] args) {
		
        int max = 1;
		
        for(int i=1; i<s.length()-1; i++) {
			
            if(s.charAt(i-1) == s.charAt(i+1))
                max = Math.max(max, calculator(s, i, i, 1));    // 문자 하나를 기준으로 팰린드롬 될 경우
            if(s.charAt(i-1) == s.charAt(i))
                max = Math.max(max, calculator(s, i-1, i, 2));    // 모든 문자가 짝지어져서 팰린드롬 될 경우(기준 문자와 앞 문자가 동일)
            if(s.charAt(i+1) == s.charAt(i))
                max = Math.max(max, calculator(s, i, i+1, 2));    // 모든 문자가 짝지어져서 팰린드롬 될 경우(기준 문자와 뒷 문자가 동일)
        }
        System.out.println(max);
    }
	
    public static int calculator(String s, int a, int b, int tmp) {
        int k = 1;
        
        while(a-k >= 0 && b+k < s.length()) {
            int start = a-k, end = b+k;
			
            if(s.charAt(start) == s.charAt(end)) {
                tmp += 2;
                k++;
            }
            else break;
        }
        return tmp;
    }

 

 

 

댓글