[백준] 10988번 - 팰린드롬인지 확인하기 (Java)

Jina·2023년 7월 25일
0

Java

목록 보기
8/13

문제 링크

첫 번째 시도


읽어들인 문자열을 거꾸로 저장한 다음, 두 문자열 배열을 비교하려 했다.

		// 단어 입력받기
        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()에 대해 찾아봤다.

.equals() 는 배열의 크기까지 같아야 동일하다고 판단한다고 한다🤣
그래서 거꾸로 저장한 배열의 length를 찍어봤더니, 입력된 부분까지가 아니라 처음 설정해둔 100값이 나왔다. 그래서 오류가 났던 것!

새로운 접근법


이 문제를 서치하다보니 새로운 접근법을 두가지나 발견했다.

1. .reverse() 사용하기

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();
    }
}

2. 입력된 문자열에서 팰린드롬인지 파악하기

입력된 문자열을 반드시 거꾸로 만들고, 이를 비교해야만 팰린드롬인지 확인할 수 있던 게 아니었다…😅 입력된 문자열 자체에서!! 문장의 앞뒤가 같은지 비교하는 방법이 있었다.

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);
    }
}

참고자료

0개의 댓글

관련 채용 정보