읽어들인 문자열을 거꾸로 저장한 다음, 두 문자열 배열을 비교하려 했다.
// 단어 입력받기
String input[] = br.readLine().split("");
int LENGTH = input.length; // 입력받은 단어의 길이
// 입력받은 단어를 거꾸로 저장하기
String result[] = new String[100];
for(int i=0; i<LENGTH; i++){
result[i] = input[LENGTH -i - 1];
}
오류가 나서 다시 입력 배열과 거꾸로 저장한 배열을 하나하나 출력해봤는데, 동일했다.. .
대체 뭐가 문제인지 모르다가 .equals()에 대해 찾아봤다.
.equals() 는 배열의 크기까지 같아야 동일하다고 판단한다고 한다🤣
그래서 거꾸로 저장한 배열의 length를 찍어봤더니, 입력된 부분까지가 아니라 처음 설정해둔 100값이 나왔다. 그래서 오류가 났던 것!
이 문제를 서치하다보니 새로운 접근법을 두가지나 발견했다.
StringBuilder를 사용하면 reverse() 함수를 사용할 수 있어서 간편하게 문자열을 거꾸로 저장할 수 있다는 점을 다시 기억하자…!
import java.io.*;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringBuilder sb= new StringBuilder( br.readLine() );
if(sb.toString().equals( sb.reverse().toString())){
System.out.println(1);
}
else System.out.println(0);
br.close();
}
}
입력된 문자열을 반드시 거꾸로 만들고, 이를 비교해야만 팰린드롬인지 확인할 수 있던 게 아니었다…😅 입력된 문자열 자체에서!! 문장의 앞뒤가 같은지 비교하는 방법이 있었다.
import java.io.*;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
// 단어 입력받기
String input = br.readLine();
int L = input.length(); // 단어의 길이
// 문자열의 앞뒤 같은지 확인
int flag = 1; // flag를 1로 시작
for(int i=0; i < L/2; i++){
if( input.charAt(i) != input.charAt(L-i-1) ){
flag = 0; // 다르면 flag를 0으로
}
}
// 출력
System.out.println(flag);
}
}