문자열 문제이다.
문자열을 파싱한 후 양쪽의 Index를 옮겨가며 서로 같은지를 확인하면 된다.
확인했는데 숫자가 같지 않으면 팰린드롬수가 아니다.
for문을 통해 index를 옮겨갈텐데, 여기서는 문자열 길이 / 2까지만 비교해주면 된다.
예를 들어, 문자열(131)의 길이가 홀수 3 이라면, 3/2 = 1 번만 문자열을 비교해주면 된다. 가운데 자리 수는 어떤 것이 오던지 팰린드롬수이므로
문자열(1331)의 길이가 짝수 4라면, 4/2 = 2번 문자열을 비교해주어야 한다. (1=1, 3=3)
package boj.class2.팰린드롬수_1259;
import java.io.BufferedReader;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;
public class Main {
public static void main(String[] args) throws IOException {
final String PATH = "src/test/java/boj/class2/팰린드롬수_1259/input.txt";
System.setIn(new FileInputStream(PATH));
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(System.in));
while (true) {
StringTokenizer stringTokenizer = new StringTokenizer(bufferedReader.readLine());
String str = stringTokenizer.nextToken();
if ("0".equals(str)) break;
int size = str.length();
boolean isPalindrome = true;
for (int i = 0; i < (size / 2); i++) {
if (str.charAt(i) != str.charAt(size - i - 1)) {
isPalindrome = false;
break;
}
}
System.out.println(isPalindrome ? "yes" : "no");
}
}
}