[Baekjoon] 10988번: 팰린드롬인지 확인하기

2023. 3. 13. 16:18Computer Sciences/Problem Solve

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

 

10988번: 팰린드롬인지 확인하기

첫째 줄에 단어가 주어진다. 단어의 길이는 1보다 크거나 같고, 100보다 작거나 같으며, 알파벳 소문자로만 이루어져 있다.

www.acmicpc.net

문제 설명

지난번에 이어 팰린드롬과 관련된 문제이다. 이 문제는 주어진 문자열이 팰린드롬인지 확인하고 맞다면 1, 아니라면 0을 출력하면 된다. 팰린드롬은 level과 같이 앞뒤로 읽어도 똑같은 문자열을 말한다.

풀이 방법

입력받은 문자열을 절반으로 자르고 뒷부분을 뒤집은 뒤 앞부분과 비교하는 방식으로 해결하였다.

package baekjoon.string;

import java.io.*;

public class BOJ10988 {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        String str = br.readLine();
        int mid = str.length() / 2;
        String start = str.substring(0, mid);
        String end = str.substring(mid);
        StringBuilder sb = new StringBuilder(end);

        String reversedEnd = sb.reverse()
                // 문자열이 홀수라면 마지막 글자를 지우고, 아니라면 지우지 않는다.
                .delete(str.length() % 2 == 1 ? sb.length() - 1 : sb.length(), sb.length())
                .toString();

        System.out.print(start.equals(reversedEnd) ? 1 : 0);
    }
}