알고리즘
백준 - 팰린드롬 1254번 문제 (JAVA)
쿠키담임선생님
2024. 10. 22. 21:46
어떻게 팰린드롬을 알아내야할지 정해야 한다.
abab 가 있는 경우
abab를 대칭인지 검사.
대칭이 아니라면 앞에 인덱스를 한칸 올려서
bab를 검사. 이때 대칭임으로 앞에 몇칸올렸는지 저장하고 있다가 뒤에 붙이면 된다.
즉 전체length 에 substring 한 인덱스를 붙이면 된다.
그러면 대칭인지 검사를 어떻게 하는지가 문제이다.
그 부분은 abab에서 가장 앞 인덱스 를 start 변수에 넣고 가장 끝 index를 end 변수에 넣는다.
그리고 while 문을 통해 한칸씩 start++ 와 end-- 를 하면서 값을 비교한다. 하나라도 다르다면 대칭이 아님으로 바로 return false를 하고 종료시킨다.
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class 백준_팰린드롬 {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String temp = br.readLine();
//System.out.println(temp.substring(0,4));//abab 기준 bab
int index = 0;
int answer = 0;
while (index <= temp.length()){
String s = temp.substring(index, temp.length());
if(palin(s)){ //중간으로 잘랐을 시 앞뒤가 같으면 현재 자른 index만큼 length 에 index를 더해준다 그 뒤 바로 break
answer= index+temp.length();
break;
}
index++;
}
System.out.println(answer);
}
private static boolean palin(String s){
//앞뒤 잘랏을때 하나라도 다르면 false 리턴 후에 함수 종료
int start = 0;
int end = s.length()-1;
while (start <= end){
if(s.charAt(start) != s.charAt(end)){
return false;
}
start++;
end--;
}
return true;
}
}