알고리즘/프로그래머스

[프로그래머스] 가장 긴 팰린드롬 자바(Java) 풀이 및 해설

승민아 2024. 5. 21. 13:47

https://school.programmers.co.kr/learn/courses/30/lessons/12904#qna

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

풀이 방법

팰린드롬의 길이를 "1 ~ s의 길이"로 설정해 놓고 반복문을 통해

시작 위치부터 종료 위치까지 팰린드롬인지 확인하면 된다.

 

전체 코드

import java.util.*;
class Solution
{
    public int solution(String s)
    {
        int answer = 0;
        
        for(int i=s.length(); i>=1; i--) { // 검사할 팰린드롬 길이
            
            for(int j=0; j<=s.length()-i; j++) { // 시작 위치
                int cnt = 0;
                int start = j; // 시작 위치
                int end = j+i-1; // 끝 위치
                
                boolean flag = true; // 팰린드롬 가능 여부
                while(start <= end) {
                    if(s.charAt(start) != s.charAt(end)) {
                        flag = false;
                        break;
                    }
                    start++;
                    end--;
                }
                
                // 팰린드롬 길이가 긴 것부터 탐색하므로 첫 탐색이 최대 길이임
                if(flag) {
                    return i;
                }
                    
            }
        }
        
        return answer;
    }
}