본문 바로가기
Java

[백준] 코딩 테스트 문제 10988: 팰린드롬인지 확인하기

by 리슈다 2026. 2. 24.

https://www.acmicpc.net/problem/10988

import java.io.*;
public class Main {
    public static void main(String[] args) throws Exception {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        String str = br.readLine();
        StringBuilder sb = new StringBuilder();
        for(int i = str.length() - 1; i >= 0; i--) {
            sb.append(str.charAt(i));
        }

        if(str.equals(sb.toString())) {
            System.out.println(1);
        } else{
            System.out.println(0);
        }
    }
}

알아서 뒤집어주는 메서드가 있지 않을까.? 생각은 들었지만 일단 당장은 모르니까 하나씩 뒤집어준 뒤 equals로 기존 문자열과 비교해줬다.

 

import java.io.*;
public class Main {
    public static void main(String[] args) throws Exception {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        String str = br.readLine();
        StringBuilder sb = new StringBuilder();
        
        sb.append(str).reverse();
        
        System.out.println(str.equals(sb.toString()) ? 1 : 0);
        System.out.println(str.contentEquals(sb) ? 1 : 0);
    }
}

지교수님께 여쭤보니 친절하게 알려주심

StringBuilder 내에 reverse()가 존재해서 바로 뒤집을 수 있다.

또, 참이면 1, 거짓이면 0 출력하는 조건식은 삼항연산자로 if문 없이 한 줄로 표현 가능

 

import java.io.*;
public class Main {
    public static void main(String[] args) throws Exception {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        String str = br.readLine();
        int left = 0;
        int right = str.length() - 1;

        while (left < right) {
            if (str.charAt(left) != str.charAt(right)) {
                System.out.println(0);
                return;
            }
            left++;
            right--;
        }
        System.out.println(1);
    }
}

생각지도 못했던 방법도 알려주심.

역순 문자열을 만들 필요 없이 양 끝의 문자를 순서대로 비교해서 절반까지 다 맞으면 1 출력하는 방법.